您好我想在我的面板中添加文本区域,文本字段和按钮。我希望区域使用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;
}
}
所以问题是区域和场都占据了一半的高度,一个按钮位于中心,隐藏在场下......无论如何,看起来很可怕,如何解决?
答案 0 :(得分:3)
weightx
和weighty
指定了额外空间的分配方式。在您的情况下,它们在水平和垂直方向上具有相同的值, 100 。
尝试为weightx
设置weighty
和JTextArea
为 4 ,并将weightx
和weighty
设置为 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的信息,因为你错误地使用它们