我正在使用GB布局表单。目前有两行,每行包含6个元素(第一行包含特征标签,第二个文本区域)。我的问题是应该在X 5 Y 1中显示的元素显示在X 6 Y 0中。请您指出我所犯的错误吗?Java Gridbag missalign - 第一行显示第二行的最后一个单元格
public GUI() {
super("Bla");
GridBagLayout layout = new GridBagLayout();
setLayout(layout);
GridBagConstraints gbc = new GridBagConstraints();
[enter image description here][1]gbc.insets = new Insets(10,10,10,10);
Container con = getContentPane();
panel1 = new JPanel();
labBrawn = new JLabel("Brawn");
gbc.gridx = 0;
gbc.gridy = 0;
con.add(labBrawn, gbc);
labAgility = new JLabel("Agility");
gbc.gridx = 1;
gbc.gridy = 0;
con.add(labAgility, gbc);
labIntellect = new JLabel("Intellect");
gbc.gridx = 2;
gbc.gridy = 0;
con.add(labIntellect, gbc);
labCunning = new JLabel("Cunning");
gbc.gridx = 3;
gbc.gridy = 0;
con.add(labCunning, gbc);
labWillpower = new JLabel("Willpower");
gbc.gridx = 4;
gbc.gridy = 0;
con.add(labWillpower, gbc);
labPresence = new JLabel("Presence");
gbc.gridx = 5;
gbc.gridy = 0;
con.add(labPresence, gbc);
txtBrawn = new JTextField("", 2);
gbc.gridx = 0;
gbc.gridy = 1;
con.add(txtBrawn, gbc);
txtAgility = new JTextField("", 2);
gbc.gridx = 1;
gbc.gridy = 1;
con.add(txtAgility, gbc);
txtIntellect = new JTextField("", 2);
gbc.gridx = 2;
gbc.gridy = 1;
con.add(txtIntellect, gbc);
txtCunning = new JTextField("", 2);
gbc.gridx = 3;
gbc.gridy = 1;
con.add(txtCunning, gbc);
txtWillpower = new JTextField("", 2);
gbc.gridx = 4;
gbc.gridy = 1;
con.add(txtWillpower, gbc);
txtPresence = new JTextField("", 2);
gbc.gridx = 5;
gbc.gridy = 1;
con.add(txtPresence);
}
哦,我...谢谢你,对不起,这样的问题困扰。 – Faire
@Faire Yup,没问题。总是会发生在我身上。这就是为什么我创建GridBagManager并且我的抽象面板有自己的add()方法,它调用add(comp,gbc),GridBagConstraints gbc是这个类的一个字段。就那么简单。看看它,快乐的编码! – bigby