как вручную добавить метку с текстовым полем внутри панели с помощью Java - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть диалоговое окно, и внутри этого диалога у меня есть список слева и справа, у меня есть панель

Я создал эти вещи с помощью GUI Builder NetBeans

Теперь для панели у меня есть 3 пары меток - текстовое поле

проблема в том, что в зависимости от ввода пользователя пары могут стать 4 или 5 и т. Д.

поэтому я не могу просто нарисовать эти пары с помощью GUI Builder, мне нужно создать их, написав код

Вопрос в том, какую компоновку для этой панели мне следует использовать для достижения этой цели?

панель такая

label1 textfield
label2 textfield
label3 textfield
empty
empty
etc

вот картинка:

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

спасибо

1 Ответ

2 голосов
/ 26 сентября 2011

Лично я предпочитаю 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 для контейнера.

...