设置 JButton 大小

新手上路,请多包涵

我正在尝试将 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 许可协议

阅读 1.2k
2 个回答

布局管理器通常不考虑组件的大小,因此设置大小通常影响不大。相反,布局管理器通常尊重组件的 首选 大小。话虽如此,通常最好不要尝试自己通过 setPreferredSize(Dimension d) 设置 preferredSizes ,而是让布局管理器和组件为你做这件事。如果您必须自己做,请考虑扩展组件并覆盖 getPreferredSize() 并添加 智能 代码以返回合适且适当的 preferredSize 维度。

例如,请查看我在 此处 对最近问题的回答中的代码。在其中,我更改了 JButton 字体的大小以使其变大,但我从未设置任何组件的大小或 preferredSizes,而是让组件本身和容器的布局管理器为我完成这项工作。

如果您不相信我,请阅读 kleopatra 的一些帖子和评论, kleopatra 是我所知道的最聪明、最有影响力的 Swing 编码员之一,也是 SwingX 工具包 的作者之一。例如她 在这里 的回答。

原文由 Hovercraft Full Of Eels 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试使用 square1.setPreferredSize(d) 而不是 setSize(d)

原文由 Jon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题