我正在尝试将 JButton 的大小调整为始终为特定大小。我有 9 个这样的按钮。我从API了解到JButton继承了setSize(int a, int b)和setSize(Dimension d)。尽管我尝试了另一个,但我选择使用第二个,但它没有解决我的问题。这是代码。
// setup buttons
reset = new JButton("Reset");
square1 = new JButton();
square2 = new JButton();
square3 = new JButton();
square4 = new JButton();
square5 = new JButton();
square6 = new JButton();
square7 = new JButton();
square8 = new JButton();
square9 = new JButton();
//set button size
Dimension d = new Dimension(100,100);
square1.setSize(d);
square2.setSize(d);
square3.setSize(d);
square4.setSize(d);
square5.setSize(d);
square6.setSize(d);
square7.setSize(d);
square8.setSize(d);
square9.setSize(d);
我尝试了几种不同的尺寸,但都没有任何区别。我错过了什么?我正在为按钮所在的 JPanel 使用 gridLayout(3,3,5,5)。 JFrame 的尺寸为 (400,425)。谢谢你的帮助!
原文由 Rostro 发布,翻译遵循 CC BY-SA 4.0 许可协议
布局管理器通常不考虑组件的大小,因此设置大小通常影响不大。相反,布局管理器通常尊重组件的 首选 大小。话虽如此,通常最好不要尝试自己通过
setPreferredSize(Dimension d)
设置 preferredSizes ,而是让布局管理器和组件为你做这件事。如果您必须自己做,请考虑扩展组件并覆盖getPreferredSize()
并添加 智能 代码以返回合适且适当的 preferredSize 维度。例如,请查看我在 此处 对最近问题的回答中的代码。在其中,我更改了 JButton 字体的大小以使其变大,但我从未设置任何组件的大小或 preferredSizes,而是让组件本身和容器的布局管理器为我完成这项工作。
如果您不相信我,请阅读 kleopatra 的一些帖子和评论, kleopatra 是我所知道的最聪明、最有影响力的 Swing 编码员之一,也是 SwingX 工具包 的作者之一。例如她 在这里 的回答。