2011-04-09 90 views
0

我正在用som按钮制作面板。 this is what it looks like now.gridbadlayout垂直间隙

但我希望按钮彼此接触,换句话说,我希望垂直差距消失。但按钮不应调整大小。我该怎么去做这件事?

我的代码:

this.setLayout(new GridBagLayout()); 
    GridBagConstraints constraints = new GridBagConstraints(); 

    constraints.fill = GridBagConstraints.HORIZONTAL; 
    constraints.gridwidth = 2; 
    constraints.weightx = 1D; 
    constraints.weighty = 1D; 
    constraints.gridx = 0; 
    constraints.gridy = 0; 
    int row = 0; 
    for (MainAction actie : mainActions) { 
     constraints.gridy = row; 
     row++; 
     SelectedActionButton but = new SelectedActionButton(selectedActionModel, actie); 
     this.add(but, constraints); 

    } 
    constraints.gridwidth = 1; 
    constraints.weightx = 0.5D; 
    row *=2; 
    for (AbstractAction actie : objectActions) { 
     constraints.gridy = row/2; 
     constraints.gridx = row%2; 
     row++; 
     SelectedObjectButton but = new SelectedObjectButton(selectedObjectModel, actie); 
     but.setMargin(new Insets(0, 0, 0, 0)); 
     this.add(but, constraints); 
    } 

在此先感谢

回答

1

更改以下行

constraints.weighty = 1D; 

constraints.weighty = 0D; 

将解决您的问题。

更新:调整所有按钮北您可以在最后一行添加一个附加组件吃的所有可用空间:

constraints.weighty = 1D; 
constraints.gridy = row; 
this.add(Box.createGlue(), constraints); 
+0

哦yups,这有点儿似乎工作:D只有一个问题,现在,如何我可以确保按钮是北?因为他们现在被集中 – Drareeg 2011-04-09 08:49:08

+1

@ user545236对于可能的北方解决方案,请参阅我的编辑。 – Howard 2011-04-09 08:56:10