2016-11-08 185 views
0

如何使按钮高度稍大一些,左右列的宽度大小相同。我试过weightxweightyheightxheighty但它没有工作。提前致谢。这里是我的代码:Java - 调整GridBagLayout中的按钮大小

Container contentPane = getContentPane(); 
contentPane.setLayout(new GridBagLayout()); 
GridBagConstraints c = new GridBagConstraints(); 
c.insets = new Insets(20,20,20,20); 
c.fill = GridBagConstraints.HORIZONTAL; 
c.weightx = 1.0; 

JButton back = new JButton("Back to previous menu"); 
c.gridx = 1; 
c.gridy = 0; 
contentPane.add(back,c); 

JLabel welcome = new JLabel("Hi secretary, please select an action"); 
c.gridx = 0; 
c.gridy = 0; 
contentPane.add(welcome,c); 

还有更多的按钮定义代码,但它只是将自己定位在布局上。

Picture

回答

0

不要设置你的按钮的首选大小。这将为桌面字体与您不同的用户造成严重的视觉问题。

您应该让按钮定义它自己的首选大小。以增大优选高度的最佳方法是使用GridBagConstraints.ipady

c.ipady = 24; 

另一种选择是使用JButton.setMargin给每个按钮的附加余量:

Insets margin = new Insets(12, 0, 12, 0); 
back.setMargin(margin); 
welcome.setMargin(margin); 

强制左侧和右侧具有相等的宽度比较困难。 GridBagLayout不能做到这一点。 weightx字段只确定额外空间的分布情况,当窗口比需要的宽度更宽时,以适应所有子组件的首选大小。如果列的宽度不同,则使用weightx分配额外空间不会使宽度相等。

就我个人而言,我不认为强迫双方有相同的宽度会增加任何价值。如果你坚持左右两边的宽度完全相等,你将不得不放弃使用GridBagLayout。 SpringLayout可以做到这一点,但它很难使用。如果你愿意引入第三方依赖,像米格布局可能会做到这一点。