2016-11-08 183 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可以做到這一點,但它很難使用。如果你願意引入第三方依賴,像米格佈局可能會做到這一點。