因此,我只是创建一个简单的游戏屏幕,我想把我的两个按钮像这样:

我被建议使用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); 然而,它产生了这样的结果:

我似乎找不到任何关于卡片布局定位的信息。我的猜测是我根本不应该使用这个布局,那么我应该使用什么布局呢?
发布于 2013-10-14 10:57:13
卡片布局仅用于显示布局中的多个组件之一。您可以通过编程方式选择要显示的卡,其余的将隐藏在视图中。
如果在卡片布局中添加两个按钮,则只能看到一个按钮。你不应该在你的特定情况下使用它。您可以在X轴上使用Box布局
BoxLayout管理器是使用一个axis参数构造的,该参数指定要执行的布局类型。有四种选择: X_AXIS -组件从左到右水平排列。 Y_AXIS -组件从上到下垂直排列。 LINE_AXIS -组件是根据容器的ComponentOrientation属性在一行中布局单词的方式。如果容器的ComponentOrientation是水平的,那么组件是水平布局的,否则它们是垂直布局的。对于水平方向,如果容器的ComponentOrientation是从左到右,那么组件从左到右排列,否则它们就从右到左排列。对于垂直方向,组件总是从上到下排列。 PAGE_AXIS -组件是根据容器的ComponentOrientation属性在页面上布局文本行的方式。如果容器的ComponentOrientation是水平的,那么组件是垂直布局的,否则它们是水平布局的。对于水平方向,如果容器的ComponentOrientation是从左到右,那么组件从左到右排列,否则它们就从右到左排列。对于垂直方向,组件总是从上到下排列。
https://stackoverflow.com/questions/19358632
复制相似问题