JTable против списка JPanels в JScrollpane - PullRequest
0 голосов
/ 22 ноября 2010

(отредактировано)

Я хочу отобразить динамический список JPanels, которые содержат текстовое поле, которое пользователь может изменить.У меня возникли проблемы с выбором дизайна моего графического интерфейса.Должен ли я отображать каждый JPanel в JTable или JScrollPane?

Подход JTable, насколько я понимаю, более эффективен в использовании памяти и быстрее, потому что у меня есть метод getTableCellRenderer, использующий кэшированный JPanel для отображения данных ячейки таблицы (редактировать: я не храню JPanels в моей таблице только данные).Метод getTableCellEditor вызывает тот же кэшированный JPanel для захвата ввода пользователя.После того, как ввод был собран, данные будут обновлены в таблице.Я не уверен, как разрешить пользователю изменять несколько компонентов (текстовых полей) этого временного JPanel до того, как средство визуализации ячеек вступит во владение снова.Единственный способ обойти это - создать всплывающее диалоговое окно для сбора всей информации, как только пользователь закончит сохранять данные обратно в таблицу.(Я думаю, что это останавливает процесс рендеринга ячеек таблицы, пока не уверен.)

Другой подход - просто создать и добавить JPanels в JScrollPane.Однако это будет означать, что мне придется не только хранить необработанные данные (целые числа, строки и т. Д.), Но и использовать больше памяти, поскольку я создаю очень много объектов JPanel.Это, очевидно, более простой подход;Однако, если мой список довольно большой, то я уверен, что увижу некоторые успехи.

Мне нравится дизайн JTable;Тем не менее, я ненавижу тот факт, что, когда ячейка должна быть отредактирована, мне нужно будет сделать всплывающее окно для захвата входных данных.Я не знаю, я мог бы просто пойти с легкостью дизайна JScrollPane.

Это звучит правильно, или я упускаю некоторую информацию о том, как работает процесс getTableCellEditor?

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Мне нравится дизайн JTable; тем не менее, я ненавижу тот факт, что, когда ячейка должна быть отредактирована, мне нужно будет сделать всплывающее окно для ввода входных данных

Вы читали JTable API и следовали по ссылкам на учебное пособие по Swing «Как использовать таблицы» для рабочих примеров? Вам не нужно создавать всплывающий редактор. Ячейки редактируются на месте.

Для ваших кнопок в таблице вам понадобится специальный редактор. Вы можете проверить Столбец Кнопки Столба для одного способа сделать это.

0 голосов
/ 22 ноября 2010

JTable извлекает некоторую эффективность из использования образца с навесом для визуализации и редактирования ячеек, как описано в Как использовать таблицы . Вы можете применить тот же шаблон к вашей сетке прокрутки. Я использовал оба подхода, но недавно я стал отдавать предпочтение org.netbeans.swing.outline.Outline в JSplitPane.

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