Как вложить сложные компоненты Swing - PullRequest
1 голос
/ 19 сентября 2010

В моем приложении Swing у меня есть класс POJO под названием Command.Команда имеет несколько подклассов.Большинство подклассов Command состоит из 2 или 3 строк.Но данные в одном из подклассов Command имеют совершенно другой формат данных.

У меня также есть класс с именем CommandEditor, который создает графический интерфейс для просмотра и редактирования различных подклассов Command.CommandEditor создает JPanel, который содержит горизонтальный блок.Для подклассов Command, которые содержат 2 или 3 строки, Box содержит 2 или 3 соответствующих поля JTextFields.А для нечетного подкласса Box содержит соответствующие виджеты для просмотра и редактирования данных этого подкласса.

Я могу собрать форму, которая содержит несколько CommandEditors, и все это прекрасно работает.

Но теперь мне нужно разобраться с ArrayList of Commands.Все Команды в ArrayList гарантированно принадлежат к одному и тому же подклассу, а это означает, что соответствующие CommandEditors для каждой из Команд будут выглядеть в основном одинаково (иметь одинаковую форму)это похоже на таблицу CommandEditors.

Какой лучший способ сделать это?Могу ли я передать вектор объектов CommandEditor в JList (такой, чтобы JList помещал CommandEditors в строки, а CommandEditor создавал иллюзию наличия столбцов)?Или есть лучший способ?

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Кажется, что вам нужен только один столбец CommandEditors, поэтому JList было бы проще использовать, если бы он поддерживал редактор ячеек, как JTable.

Если у вас есть возможность выйти за рамкиswing, Список Apache Pivot поддерживает редактор ячеек.Лично я им не пользовался, но видел хорошие отзывы.

1 голос
/ 19 сентября 2010

Один из подходов заключается в использовании JTable и реализации интерфейса TableCellEditor, как предлагается в этом примере .Вы можете создать разные PopupDialog для каждого вида CommandEditor.См. Как использовать таблицы для дополнительных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...