为什么这个GridBagConstraints代码不起作用?

时间:2013-04-05 21:40:36

标签: java gridbaglayout

您好我想在我的面板中添加文本区域,文本字段和按钮。我希望区域使用3/4高度和全宽度,使用1/4高度和3/4宽度的区域和一个使用1/4高度和1/4宽度的按钮。我张贴了一张照片来展示我想要的东西。代码如下:

// My JPanel class
public MainPanel() {
   setLayout(new GridBagLayout());
   add(area, new GBC(0, 0, 4, 3).setWeight(4,4).setFill(GBC.BOTH));
   add(field, new GBC(0, 3, 3, 1).setWeight(1,1).setFill(GBC.HORIZONTAL));
}

GBC是我继承自GridBagConstraints类的类:

public class GBC extends GridBagConstraints {

   public GBC(int gridx, int gridy) {
      this.gridx = gridx;
      this.gridy = gridy;
      weightx = 100;
      weighty = 100;
   }

   public GBC(int gridx, int gridy, int gridwidth, int gridheight) {
      this(gridx, gridy);
      this.gridwidth = gridwidth;
      this.gridheight = gridheight;
   }

   public GBC setFill(int fill) {
      this.fill = fill;
      return this;
   }
}

enter image description here

所以问题是区域和场都占据了一半的高度,一个按钮位于中心,隐藏在场下......无论如何,看起来很可怕,如何解决?

2 个答案:

答案 0 :(得分:3)

weightxweighty指定了额外空间的分配方式。在您的情况下,它们在水平和垂直方向上具有相同的值, 100

尝试为weightx设置weightyJTextArea 4 ,并将weightxweighty设置为 1 JTextField

您可以查看文档,了解GridBagConstraints中每个字段的用途:

http://docs.oracle.com/javase/7/docs/api/java/awt/GridBagConstraints.html

答案 1 :(得分:1)

它应该是这样的:

add(area, new GBC(0, 0, 4, 3).setWeight(4,4).setFill(GBC.BOTH));
add(field, new GBC(0, 3, 3, 1).setWeight(1,1).setFill(GBC.HORIZONTAL));

同时阅读有关weightx和weighty的信息,因为你错误地使用它们