Java 如何在一个面板上有两个组件列表

Java 如何在一个面板上有两个组件列表,java,swing,layout,layout-manager,Java,Swing,Layout,Layout Manager,我希望有一个文本字段和标签列表,在面板上垂直对齐,每个标签对应于相应的文本字段,并在UI上显示在其旁边。稍后将为另一个函数调用文本字段中的值 问题是我似乎不能把布局弄对。我尝试过使用Spring布局,但我的头脑无法控制它……基本上我可以用其他方法来实现吗?我目前正在为面板使用框布局,但它只显示一个文本字段列表,下面有一个标签列表。我还是个笨蛋,我真的需要一些新的信息。非常感谢您的帮助。您只需使用GridBagLayout(尽管MigLayout可能也值得一看) setLayout(新的GridL

我希望有一个文本字段和标签列表,在面板上垂直对齐,每个标签对应于相应的文本字段,并在UI上显示在其旁边。稍后将为另一个函数调用文本字段中的值


问题是我似乎不能把布局弄对。我尝试过使用Spring布局,但我的头脑无法控制它……基本上我可以用其他方法来实现吗?我目前正在为面板使用框布局,但它只显示一个文本字段列表,下面有一个标签列表。我还是个笨蛋,我真的需要一些新的信息。非常感谢您的帮助。

您只需使用
GridBagLayout
(尽管
MigLayout
可能也值得一看)

setLayout(新的GridLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridx=0;
gbc.gridy=0;
对于(int-index=0;index<10;index++){
gbc.anchor=GridBagConstraints.EAST;
gbc.gridx=0;
添加(新的JLabel(“标签”+索引),gbc);
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx++;
新增(新JTextField(10),gbc);
gbc.gridy++;
}
现在,很明显,这只是一个用来演示这个概念的例子,你需要扩展这个想法,并将它应用到你的特定问题上


查看更多详细信息

您可以简单地使用
GridBagLayout
(尽管
MigLayout
可能也值得一看)

setLayout(新的GridLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridx=0;
gbc.gridy=0;
对于(int-index=0;index<10;index++){
gbc.anchor=GridBagConstraints.EAST;
gbc.gridx=0;
添加(新的JLabel(“标签”+索引),gbc);
gbc.anchor=GridBagConstraints.WEST;
gbc.gridx++;
新增(新JTextField(10),gbc);
gbc.gridy++;
}
现在,很明显,这只是一个用来演示这个概念的例子,你需要扩展这个想法,并将它应用到你的特定问题上


查看更多详细信息

我建议查看RiverLayout manager。它的使用非常简单和直接


我建议看一下RiverLayout manager。它的使用非常简单和直接


我尝试过使用Spring布局,但我无法理解它……
-你读过关于Swing的教程吗?它包含一个工作示例。从工作示例开始,进行更改。话虽如此,布局管理器使用起来更简单,但从基础教程开始。然后,如果你有什么不明白的地方,你可以发布一个特定的问题,而不是仅仅说“它不起作用”。
我尝试过使用Spring布局,但我无法理解它……
-你读了上的Swing教程了吗?它包含一个工作示例。从工作示例开始,进行更改。话虽如此,布局管理器使用起来更简单,但从基础教程开始。然后,如果你有什么不明白的地方,你可以发布一个具体的问题,而不是说“它不起作用”。+1,我从来都不明白为什么这个共同的要求相对复杂。@camickr我认为,因为每个人对具体要求有不同的意见(左/右对齐、填充、重量…+1,我一直不明白为什么这个共同的要求是相对复杂的。@camickr我想是因为每个人对具体的要求(左/右对齐、填充、重量…)都有不同的看法
setLayout(new GridLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
for (int index = 0; index < 10; index++) {
    gbc.anchor = GridBagConstraints .EAST;
    gbc.gridx = 0;
    add(new JLabel("Label " + index), gbc);
    gbc.anchor = GridBagConstraints .WEST;
    gbc.gridx++;
    add(new JTextField(10), gbc);
    gbc.gridy++;
}
JFrame frame = new JFrame("Test RiverLayout");
Container container = frame.getContentPane();
container.setLayout(new RiverLayout());
container.add("left", new JLabel("Label 1"));
container.add("tab", new JTextField("Text field 1"));

container.add("br left", new JLabel("Label 2"));
container.add("tab", new JTextField("Text field 2"));

frame.pack();
frame.setVisible(true);