使按钮不可改变大小

3

我试图谷歌如何设置JButton的默认大小,以便它们在JFrame调整大小时不会增长。我没有看到setDefaultSize方法,但我找到了最接近的一个方法是setMaximumSize()。然而,在我的情况下似乎并不起作用,我猜想这是因为我在框架中使用Grid Layout来定位我的按钮,这是我的一小段代码:

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

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

这是发生的情况的图片: enter image description here 当我调整大小时,我希望我的按钮在右侧面板的中间(就像现在一样,但更小)。 有什么办法可以解决这个问题吗? 我认为我必须使用另一种布局或类似的东西。
谢谢!
编辑:我修改了我的代码以使用BoxLayout,但似乎没有将按钮放在中间。 X对齐正在工作,但Y对齐没有任何作用:
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);

这里输入图片描述

编辑2:用垂直粘合修复。


1
是的,GridLayout 不是正确的选择。你尝试过其他布局管理器吗?有几个选项可以使用。我建议多做一些实验。 - Dawood ibn Kareem
是的,如果您查看我的编辑,我尝试使用BoxLayout,但我无法将按钮对齐到面板的中间(请参见OP中的图片)。 - user3281466
1
抱歉,在我发表早期评论时,我没有看到你的编辑。如果你想将按钮群移到中间,我建议在按钮上方和下方添加垂直粘合剂。请查看camickr答案中的链接。 :-) - Dawood ibn Kareem
2个回答

2

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

尝试使用垂直BoxLayout代替。有关更多信息和示例,请参阅Swing教程中有关如何使用Box布局的部分。


谢谢,能告诉我为什么我使用Box布局时按钮没有居中对齐吗?请看我在帖子中的编辑。 - user3281466
1
@user3281466,请阅读教程。有一个部分专门讲解对齐方式的工作原理。在您的组件之前/之后可能需要“粘合剂”。 - camickr

2
将每个JButton封装在一个使用FlowLayout的JPanel中,然后将这些FlowLayout JPanel添加到rightPanel中,而不是直接添加JButtons。这样可以保持均匀间距,但不会使它们扩展以占用父容器可用的整个空间。
如果您不想让它们均匀分布,而是希望它们从上到下成为三个连续的按钮,您可以使右侧面板具有BorderLayout,向BorderLayout的北部区域添加一个子面板,该子面板具有原始的GridLayout和右侧面板相同,然后将这些包含JButtons的FlowLayout面板添加到其中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接