Лучшие практики связывания данных Java - PullRequest
9 голосов
/ 28 июня 2010

Даже если я не новичок в Java, я использовал его только в школьной / университетской среде, поэтому я не знаю всех лучших практик, используемых на предприятии.

В частности, сейчас я занимаюсь разработкой настольного Java-приложения (используя Swing на уровне пользовательского интерфейса), и меня особенно интересуют рекомендации по связыванию данных с компонентами Swing.

Например, у меня может быть список объектов модели на уровне модели, и мне нужно показать их в JTable. Затем, когда выбрана одна строка JTable, мне нужно отобразить некоторую информацию относительно объекта модели, соответствующего выбранной строке, на некоторых JLabels.

Какие библиотеки мне следует использовать? Каковы наилучшие практики для этого?

Я ищу ссылки / статьи / учебные пособия (/ книги?), Чтобы погрузиться в эту тему и узнать о плюсах и минусах различных решений.

Ответы [ 4 ]

6 голосов
/ 28 июня 2010

Для приведенного вами конкретного примера я бы порекомендовал следующий подход:

  1. Представьте объекты вашей модели как List<Model>, где реализация List поддерживает RandomAccess (например, ArrayList).
  2. Подкласс AbstractTableModel и переопределите getValueAt(int row, int col) для индексации в List<Model> и получения соответствующего Model экземпляра.Затем верните конкретный атрибут, который вы хотите привязать к столбцу: col.

В общем, я использую свой собственный метод, когда речь идет о привязке данных, а не использую фреймворк.Для панелей в стиле редактора я обычно реализую три метода: initialise(), commit() и clear(), при этом initialise принимает экземпляр редактируемого объекта домена, commit применяет любые изменения и возвращает измененный экземпляр объекта.объект домена, и clear очищает все значения компонентов пользовательского интерфейса или устанавливает для них значения по умолчанию.

1 голос
/ 28 июня 2010

Чтобы обработать действие выбора, вам нужно реализовать ListSelectionListener на модели выбора вашего JTable. Вы можете получить некоторые детали здесь и здесь .

Как только событие будет запущено, вам будут предоставлены некоторые данные о событии, включая source события. Вам также будет предоставлен ведущий индекс выбора, который можно использовать для идентификации выбранной строки (при условии, что вы не разрешаете множественный выбор). Вам нужно будет собрать объект данных из вашей табличной модели (или другой общей модели в зависимости от дизайна вашей модели), чтобы получить значения для ваших кнопок.

1 голос
/ 28 июня 2010

Всегда открывайте свое приложение для расширения и учитывайте фактор связи.Под этим я подразумеваю, что вы должны хранить всю свою модель данных в отдельных структурах данных независимо от уровня пользовательского интерфейса (компоненты Swing).Вам следует попытаться создать отдельную слабо связанную (иметь отдельный пакет поставщика данных) структуру данных, которая бы выдала вам все необходимые значения.Как только этот дизайн будет создан, вы можете начать беспокоиться о привязках вашего пользовательского интерфейса.

Создайте удобную среду разработки (например, Netbeans) для разработки, связанной с колебаниями.ВСЕГДА выбирайте макеты .Поначалу макеты сложно спроектировать, но как только вы начнете с ними работать, это будет действительно полезно и удобно.Вы также должны понимать слушателей в Swing и, конечно, Swingworkers.Сделайте Google, вы найдете действительно хорошие ресурсы по этим.

0 голосов
/ 29 июня 2010

Я не очень хорошо знаю свинг, но вы пробовали использовать медиатор модели GUI? Применяется на любом языке и с любыми компонентами графического интерфейса.

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