Java GridBagLayout没有…行为正常
我确信我遗漏了一些简单的东西。但我正在尝试构建一个简单的数据输入UI,看起来像这样 主要的问题是,我不喜欢他们似乎都集中在自己的专栏上。我想让他们在文本框上排队。这是代码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
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;
}