如何使用Java在面板内手动添加带有文本字段的标签

时间:2011-09-25 17:16:30

标签: java label panel textfield

我有一个对话框,在这个对话框中我左边有一个列表,右边有一个面板

我使用netbeans的gui builder

创建了这些东西

现在对于面板,我有3对标签 - 文本字段

问题在于,根据用户的输入,对可能变为4或5等

所以我不能只使用gui构建器绘制这些对,我需要通过编写代码来创建它们

问题是,为了实现这个目的,我应该使用这种面板的哪种布局?

小组就是那样

label1 textfield
label2 textfield
label3 textfield
empty
empty
etc

这是一张图片:

http://img828.imageshack.us/img828/8894/asdsadc.png

感谢

1 个答案:

答案 0 :(得分:2)

我个人更喜欢GroupLayout来完成这些任务。

Screenshot for below GroupLayout

GroupLayout layout = new GroupLayout(container);
container.setLayout(layout);
layout.setAutoCreateContainerGaps(true);
layout.setAutoCreateGaps(true);

Group groupLabels = layout.createParallelGroup();
Group groupFields = layout.createParallelGroup();
Group groupRows = layout.createSequentialGroup();

layout.setHorizontalGroup(layout.createSequentialGroup()
    .addGroup(groupLabels)
    .addGroup(groupFields));
layout.setVerticalGroup(groupRows);

for (int i = 0; i < 5; i++) {
    JLabel label = new JLabel("ABCDEFGHIJ".substring(0, 2 + 2 * i));
    JTextField field = new JTextField("ABCDEFGHIJ".substring(0, 2 + 2 * i));

    groupLabels.addComponent(label);
    groupFields.addComponent(field);
    groupRows.addGroup(layout.createParallelGroup()
        .addComponent(label)
        .addComponent(field, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE));
}

如果要动态添加更多行,您唯一需要做的就是将相应的组件添加到三个组中,并在容器上调用validate