java - 设置 JButton 大小

标签 java swing jpanel awt 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)。感谢您的帮助!

最佳答案

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

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

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

关于java - 设置 JButton 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25945439/

相关文章:

java - 打印具有重复条目的数组列表

java - java中的字符串引用

java - 屏幕卡住直到函数返回

java - 在浏览器上显示 java 代码的动态 Web 项目?

java - 我的 JPanel 显示为灰色

c# - Java 中的 DataTable 等效项

java - 在 lwjgl 窗口中呈现 javax.swing.JButton

java - 在 jframe 运行时添加删除面板

java - 我如何在java gui中使用图像

java - 在多个 JPanel 上使用 JPanel