我正在尝试将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)。谢谢你的帮助!
答案 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);
这就是你如何设置按钮的大小 有更多方法可以指定大小,但我使用这个 希望这会对你有帮助....