设置JButton大小

时间:2014-09-20 05:03:44

标签: 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);

我尝试了几个不同的维度,但没有一个有任何区别。我错过了什么?我正在使用gridLayout(3,3,5,5)作为按钮所在的JPanel。 JFrame的尺寸为(400,425)。谢谢你的帮助!

3 个答案:

答案 0 :(得分:10)

布局管理员通常不尊重组件的大小,因此设置大小通常影响不大。相反,布局管理器通常会尊重组件的首选大小。说到这一点,通常最好不要通过setPreferredSize(Dimension d)自己设置preferredSize,而是让布局管理器和组件为您完成此操作。如果您必须自己动手,请考虑扩展组件并覆盖getPreferredSize()并添加智能代码,以返回正确且适当的preferredSize维度。

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

如果你不相信我,请阅读kleopatra的一些帖子和评论,SwingX toolkit,我所知道的最聪明,最有影响力的Swing程序员之一,以及{作者之一{ {3}}。例如她的回答here

答案 1 :(得分:4)

尝试使用square1.setPreferredSize(d)代替setSize(d)

答案 2 :(得分:0)

您可以将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);

这就是你如何设置按钮的大小 有更多方法可以指定大小,但我使用这个 希望这会对你有帮助....