2

你好,所以我想在我的面板中添加文本区域、文本字段和按钮。我希望区域使用 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;
   }
}

在此处输入图像描述

所以问题是区域和字段都占一半高度,并且一个按钮在中心,隐藏在字段下面......无论如何看起来很糟糕,如果如何解决?

4

2 回答 2

3

weightx并且weighty是指定如何分配额外空间的内容。在您的情况下,它们在水平和垂直方向上都具有相同的值,即100

尝试将weightxand设置weighty4 for并将andJTextArea设置为1 forweightxweightyJTextField

您可以检查文档中每个字段的作用GridBagConstraints

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

于 2013-04-05T21:53:25.827 回答
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 的信息,因为您以错误的方式使用它们

于 2013-04-05T22:07:21.977 回答