Java GridBagLayout没有…行为正常

Java GridBagLayout没有…行为正常,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我确信我遗漏了一些简单的东西。但我正在尝试构建一个简单的数据输入UI,看起来像这样 主要的问题是,我不喜欢他们似乎都集中在自己的专栏上。我想让他们在文本框上排队。这是代码 public void makeTextField(int z, int x, int y, String label, JPanel result){ JPanel jp = new JPanel(); JLabel jl = new JLabel(); jta_array[z] = new JTe

我确信我遗漏了一些简单的东西。但我正在尝试构建一个简单的数据输入UI,看起来像这样

主要的问题是,我不喜欢他们似乎都集中在自己的专栏上。我想让他们在文本框上排队。这是代码

public void makeTextField(int z, int x, int y, String label, JPanel result){
    JPanel jp = new JPanel();
    JLabel jl = new JLabel();
    jta_array[z] = new JTextArea();
    GridBagConstraints gc = new GridBagConstraints();

    gc.fill = GridBagConstraints.BOTH;

    jp.setLayout(new java.awt.GridBagLayout());

    jl.setText(label);
    gc.gridx = 1;
    gc.gridy = 1;
    gc.anchor = GridBagConstraints.EAST;

    jp.add(jl,gc);

    jta_array[z].setEditable(true);
    jta_array[z].setColumns(30);

    gc.gridx = 2;
    gc.gridy = 1;
    gc.anchor = GridBagConstraints.WEST;

    jp.add(jta_array[z],gc);

    gc.gridx = x;
    gc.gridy = y;

    gc.anchor = GridBagConstraints.EAST;

    result.add(jp,gc);      
}

public JPanel makePanel() {
    JPanel jp = new JPanel();

    jp.setLayout(new java.awt.GridBagLayout());

    makeTextField(0,1,1,"Project Number:", jp);
    makeTextField(1,1,2,"Project Name:", jp);
    makeTextField(2,1,3,"Author Name:", jp);
    makeTextField(3,2,3,"Author Email:", jp);
    makeTextField(4,3,3,"Author Phone:", jp);
    makeTextField(5,1,4,"Architect/Designer Name:", jp);
    makeTextField(6,2,4,"Architect/Designer Email:", jp);
    makeTextField(7,3,4,"Architect/Designer Phone:", jp);
    makeTextField(8,1,5,"Contractor Name:", jp);
    makeTextField(9,2,5,"Contractor Email:", jp);
    makeTextField(10,3,5,"Contractor Phone:", jp);

    return jp;
}
任何帮助都将不胜感激


根据下面的答案。新代码(如果其他人需要查看它是如何修复的)


您正在嵌套两个不同的
GridBagLayout
s。将标签和文本字段添加到同一面板中,以便它们由相同的
GridBagLayout

控制,非常感谢!我将用生成的代码和屏幕截图修改上述内容
public void makeTextField(int z, int x, int y, String label, JPanel result){
    JLabel jl = new JLabel();
    jta_array[z] = new JTextArea();
    GridBagConstraints gc = new GridBagConstraints();

    gc.fill = GridBagConstraints.BOTH;

    jl.setText(label);
    gc.gridx = x;
    gc.gridy = y;
    gc.anchor = GridBagConstraints.EAST;

    result.add(jl,gc);

    jta_array[z].setEditable(true);
    jta_array[z].setColumns(30);

    gc.gridx = x+1;
    gc.gridy = y;
    gc.anchor = GridBagConstraints.WEST;

    result.add(jta_array[z],gc);

}

public JPanel makePanel() {
    JPanel jp = new JPanel();

    jp.setLayout(new java.awt.GridBagLayout());

    makeTextField(0,1,1,"Project Number:", jp);
    makeTextField(1,1,2,"Project Name:", jp);
    makeTextField(2,1,3,"Author Name:", jp);
    makeTextField(3,3,3,"Author Email:", jp);
    makeTextField(4,5,3,"Author Phone:", jp);
    makeTextField(5,1,4,"Architect/Designer Name:", jp);
    makeTextField(6,3,4,"Architect/Designer Email:", jp);
    makeTextField(7,5,4,"Architect/Designer Phone:", jp);
    makeTextField(8,1,5,"Contractor Name:", jp);
    makeTextField(9,3,5,"Contractor Email:", jp);
    makeTextField(10,5,5,"Contractor Phone:", jp);

    return jp;
}