在GridBaglayout行(或列)中使用固定元素和灵活元素

时间:2015-03-17 13:33:45

标签: java swing layout-manager gridbaglayout

我正在尝试在文本字段旁边显示两个按钮:

image description

我已经放弃了文本,但我真的需要两个按钮保持小,而文本字段应该随窗口扩展:

image description

目前,我使用这种布局:

image description

文本字段和两个按钮都在JPanel中。

//JPanel group  - the container
//List<JComponent> - the conponents added to JPanel
//int[] weights - weights of components
GridBagLayout lay = new GridBagLayout();

for(int i=0,l=fields.size(); i<l; i++) {
  InputDef field = fields.get(i);

  GridBagConstraints c = new GridBagConstraints();
  if(weights.length<i) {
    c.weightx = weights[i]; 
  }
  c.fill = GridBagConstraints.HORIZONTAL;
  lay.setConstraints(field.getField(), c);
}
group.setLayout(lay);

在文档中,我看到组件要水平填充它们的区域,你应该将GridBagConstraints.HORIZONTAL设置为组件的约束。

此外,我读到你应该设置不同的GridBagConstraints#weightx以使元素占用不同的空间。

然而,运行上面的代码并没有做任何事情 - JPanel看起来完全一样,没有任何布局管理器。

0 个答案:

没有答案