【问题标题】:Setting JButton size设置 JButton 大小
【发布时间】:2014-11-14 17:29:07
【问题描述】:

我正在尝试将 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)。感谢您的帮助!

【问题讨论】:

  • 两个大按钮的好策略。 1) 大字体(或大图标) 2) setMargin(Insets).

标签: java swing jpanel awt jbutton


【解决方案1】:

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

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

如果您不相信我,请阅读 kleopatra 的一些帖子和 cmets,这是我所知道的最聪明和最有影响力的 Swing 编码器之一,也是 SwingX toolkit 的作者之一。比如她的回答here

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您对我之前的评论持积极态度。
    【解决方案3】:

    你可以使用 setBounds() 方法:

    Frame f=new Frame();
    f.setLayout(null);
    Button b=new Button("Dummy");
    //setBounds() methods accepts 4 
    // integer parameters
    /* 1. Location on x axis
    2. Location on y axis
    3. Width
    4. Height */
    b.setBounds(20,30,50,30);
    f.add(b);
    

    这就是您设置按钮大小的方式 有更多的方法来指定大小,但我使用这个 希望这会对你有所帮助....

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2015-07-11
      • 2013-07-26
      • 1970-01-01
      相关资源
      最近更新 更多