所以我只是创建一个简单的游戏画面,我想像这样布置我的两个按钮:
我被建议使用CardLayout(之前我没有使用布局)所以我读了java文档并创建了这个:
canvas.setLayout(new CardLayout());
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();
//buttons
final JButton btn1 = new JButton(play);
btn1.setBorder(BorderFactory.createEmptyBorder());
btn1.setContentAreaFilled(false);
final JButton btn2 = new JButton(instructions);
btn2.setBorder(BorderFactory.createEmptyBorder());
btn2.setContentAreaFilled(false);
card1.add(btn1);
card2.add(btn2);
canvas.add(card1);
canvas.add(card2);
然而,它产生了这个:
我似乎无法找到有关卡片布局定位的任何信息。我的猜测是我根本不应该使用这种布局,所以我应该使用什么布局?
答案 0 :(得分:2)
卡片布局用于仅显示布局中的多个组件之一。您可以通过编程方式选择要显示的卡片,其余卡片将从视图中隐藏。
如果在卡片布局中添加两个按钮,则只能看到一个。您不应该根据具体情况使用它。您可以使用带X轴的Box布局
BoxLayout管理器使用轴参数构造 指定将要完成的布局类型。有四个 选择:
X_AXIS - 组件从左到右水平布局。
Y_AXIS - 组件从上到下垂直排列。
LINE_AXIS - 组件按照单词布局的方式布局 line,基于容器的ComponentOrientation属性。如果 容器的ComponentOrientation是水平的,然后是组件 水平布置,否则它们垂直布置。对于 水平方向,如果容器的ComponentOrientation是 从左到右,然后组件从左到右排列 它们从右到左排列。对于垂直方向组件 总是从上到下排列。
PAGE_AXIS - 组件是 基于文本行布置文本行的方式 容器的ComponentOrientation属性。如果容器的 ComponentOrientation是水平的,然后布局组件 垂直,否则它们是水平放置的。对于水平 方向,如果容器的ComponentOrientation是从左到右 然后组件从左到右布置,否则它们被铺设 从右到左。对于垂直方向,组件始终是 从上到下排列。