使按钮不可调整

时间:2014-03-03 19:40:14

标签: java swing user-interface layout jbutton

所以我试图谷歌如何设置JButtons的默认大小,以便它们不会随着JFrame的大小调整而增长。我没有看到setDefaultSize方法,但是我能找到的最接近的方法是setMaximumSize()。但是,它似乎在我的情况下不起作用,我猜它是因为我使用网格布局将我的按钮定位在框架中,这是我的一小段代码:

rightPanel.add(ButtonA);
rightPanel.add(ButtonB);
rightPanel.add(ButtonC);

outerPanel.add(leftPanel);
outerPanel.add(rightPanel);
getContentPane().add(outerPanel);

以下是发生的事情的图片:

enter image description here

我还希望在调整大小时让我的按钮位于右侧面板中间(就像它们现在但是要小得多)。知道怎么解决这个问题吗?我假设我必须使用其他布局或其他东西。

由于

编辑:我修改了我的代码以使用BoxLayout但它似乎没有把按钮放在中间。 X Alignment正在工作,但Y Alignment没有做任何事情:

ButtonA.setAlignmentX(CENTER_ALIGNMENT);
ButtonA.setAlignmentY(CENTER_ALIGNMENT);

ButtonB.setAlignmentX(CENTER_ALIGNMENT);
ButtonB.setAlignmentY(CENTER_ALIGNMENT);

ButtonC.setAlignmentX(CENTER_ALIGNMENT);
ButtonC.setAlignmentY(CENTER_ALIGNMENT);

JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));

rightPanel.add(ButtonA);
rightPanel.add(ButtonB);
rightPanel.add(ButtonC);

outerPanel.add(leftPanel);
outerPanel.add(rightPanel);
getContentPane().add(outerPanel);

enter image description here

EDIT2:用垂直胶固定。

2 个答案:

答案 0 :(得分:2)

GridLayout将始终调整组件的大小以填充可用空间。

尝试使用垂直BoxLayout代替。有关更多信息和示例,请参阅How to Use Box Layout上的Swing教程中的部分。

答案 1 :(得分:2)

使用FlowLayout将每个JButton封装在JPanel中,然后将这些FlowLayout JPanel添加到rightPanel而不是JButton本身。这将允许您保持均匀间隔的按钮,但不会使它们扩展以占用父容器可用的整个空间。

如果你不希望它们均匀间隔,但是一个接一个地连续按下三个连续按钮,你可以让右面板有一个BorderLayout,用原始的GridLayout将一个子面板添加到BorderLayout的北面区域右侧面板有,然后添加包含JButtons的FlowLayout面板。