Добавление динамических полей в форме java / swing - PullRequest
3 голосов
/ 03 января 2011

Я довольно новичок в Java и использую NetBeans для разработки пользовательского интерфейса.

То, что я пытаюсь сделать, это ...

в форме. есть jComboBox и JTextField, где пользователь может ввести выбранную им услугу и наблюдение. Все идет нормально. JComboBox заполняется из записей базы данных.

Проблема в том, что пользователь может вводить N разных служб одновременно (их слишком много, чтобы их можно было установить). Я подумывал добавить кнопку «[+]» (вместе с «[-]» для удаления). Таким образом, пользователи нажимают [+], и еще одна новая строка с полем jcombobox + jtext появляется прямо под предыдущими.

Я застрял в этой точке. На кнопке [+] ActionPerformed я просто не могу клонировать и добавить предыдущие узлы. Любая идея о том, как действовать.

Мой фон - webdev. Делать это с помощью JavaScript было бы очень быстро. Ну, я думаю, ты уже знаешь, что я пытаюсь сделать. В ожидании света. Thx.

Ответы [ 2 ]

8 голосов
/ 04 января 2011

Вы на правильном пути.Вот некоторый исходный код , чтобы дать вам некоторые идеи alt text alt text

Основная идея заключается в том, что EntryList отвечает за отслеживание отображаемых строк;каждая строка имеет кнопку плюс / минус, а затем делегирует фактическое добавление / удаление в этот EntryList.Он также предоставляет методы для отключения кнопки минус / плюс, чтобы представление списка могло гарантировать, что вы не удалите ни одной записи (так, чтобы у вас не было пустого дисплея)

Это не работаетв совершенстве;вы заметите, что вам нужно изменить размер фрейма, чтобы новые строки отображались правильно.Но этого должно быть достаточно, чтобы вы начали.

1 голос
/ 03 января 2011

Создайте основную панель, чтобы использовать менеджер раскладки, который отображает компонент горизонтально. Класс Box прост в использовании для этого. Затем вы просто создаете новую панель с компонентами, которые хотите отобразить, и добавляете эту панель на свою главную панель. Что-то вроде:

JComboBox checkBox = new JComboBox(...);
JTextField textField = new JTextField(...);
JPanel row = new JPanel();
row.add( comboBox );
row.add( textfield );
mainPanel.add( row );
mainPanel.revalidate();
...