如何在面板上有2个组件列表

时间:2014-06-29 23:31:21

标签: java swing layout layout-manager

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

问题在于我似乎无法正确布局。我尝试过使用Spring Layout但是我无法理解它......基本上我可以用其他方式做到这一点吗?我目前正在使用面板的框布局,但它只显示一个文本字段列表,其下方有标签列表。我还是一个菜鸟,我真的需要一些新的意见。非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

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

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++;
}

现在,显然,这只是用来演示这个概念的一个例子,你需要扩展这个想法并将其应用到你的特定问题......

请查看How to use GridBagLayout了解更多详情

答案 1 :(得分:1)

我建议看看RiverLayout经理。它非常简单易用。

http://www.datadosen.se/riverlayout/

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);