2013-07-03 33 views
0

我想使用GridBagLayout在Java中創建一個GUI。這就是我想要的到底是:gridbaglayout中不正確的權重

enter image description here

所以,我跟一些指示,我在網上找到的,這裏是我寫的代碼:

Panel panel = new Panel(); 
    panel.setLayout(new GridBagLayout()); 
    GridBagConstraints gc = new GridBagConstraints(); 
    gc.fill = GridBagConstraints.BOTH; 
    gc.insets = new Insets(5, 5, 5, 5); 
    gc.weightx = 7; 
    gc.weighty = 7; 
    panel.add(new JLabel("title"), gc, 0, 0, 2, 1); 
    panel.add(new JButton("button 1"), gc, 2, 0, 1, 1); 
    panel.add(new JButton("button 2"), gc, 3, 0, 1, 1); 
    panel.add(new JButton("button 3"), gc, 4, 0, 1, 1); 
    panel.add(new JButton("button 4"), gc, 5, 0, 1, 1); 
    panel.add(new JButton("button 5"), gc, 6, 0, 1, 1); 
    panel.add(new JLabel("subtitle"), gc, 0, 1, 7, 1); 
    panel.add(new JButton("list"), gc, 0, 2, 2, 4); 
    panel.add(new JButton("button"), gc, 0, 6, 1, 1);  
    panel.add(new JButton("button"), gc, 1, 6, 1, 1); 
    panel.add(new JButton("table"), gc, 2, 2, 5, 5); 

我函數add:

public void add(Component component, GridBagConstraints constraints, int x, int y, int width, int height) { 
    constraints.gridx = x; 
    constraints.gridy = y; 
    constraints.gridwidth = width; 
    constraints.gridheight = height; 
    this.add(component, constraints); 
} 

不過,我這個到底:

enter image description here

正如您所看到的,表格根本不佔用5個單元格高度,並且該列表不佔用4個單元格。有人知道爲什麼它會這樣嗎?謝謝。

回答

1

如果添加它應該工作:

constraints.weightx = (double) width/7.0; 
    constraints.weighty = (double) height/7.0; 

你的add方法。

+0

或其他一些方法來確定組件的重量相對於網格大小 – LostBoy

+0

噢耶!非常感謝你^^你能解釋爲什麼請嗎? – Sara

+0

不幸的是不是真的......重量應該在0.0到1.0之間,並指出組件佔據多少空間垂直和水平...到目前爲止,這麼好......但我不確定爲什麼這也不是由柵格寬度和高度 – LostBoy