Привязка компонентов Swing к объектам Java - PullRequest
1 голос
/ 14 ноября 2011

В настоящее время я работаю над настольным приложением на Java, используя Swing. Я использую инфраструктуру Beansbinding от jdesktop.org для синхронизации состояния компонентов графического интерфейса и объектов данных. Однако я сталкиваюсь с проблемами со средой, заставляя меня вручную передавать информацию о состоянии между компонентами графического интерфейса и объектами данных туда и обратно.

Существуют ли альтернативы инфраструктуре привязки компонентов (которая также используется в NetBeans?)? Есть ли какая-то стратегия, которую вы можете порекомендовать (например, вообще не использовать привязки? Что делать вместо этого?)?

Если вам интересно, с какими проблемами я сталкиваюсь при связывании бобов:

  • он заменяет мою TableModel внутри JTables (поэтому я не могу использовать свои собственные или удалять строки)
  • некоторые свойства недоступны или недоступны, например selectedItem или selectedObject (по крайней мере, последовательно в JComboBox, JList и т. Д.)
  • некоторые свойства доступны только для чтения или только для записи (например, selectedItem или selectedObject)
  • Я могу связать специальные значения для значения null, но я не могу, например, сопоставить числа в списке со строками в JComboBox, используя пользовательскую функцию отображения или что-то еще (я знаю, что могу создать специальный класс с соответствующим метод toString, однако это заставляет меня создавать специальные объекты-оболочки для моих наборов данных)
  • ...

1 Ответ

2 голосов
/ 14 ноября 2011

Несмотря на то, что Beansbinding пригоден для использования, он мертв - он был искусственно переведен в состояние 1.x, когда он далек от того, чтобы получить этот номер версии, и с тех пор не сильно изменился.Какие бы проблемы вы ни обнаружили, они не будут исправлены - за исключением того, что вы сделаете это сами :-) Что касается отдельных маркеров:

  • , общая идея состоит в том, что TableModel - это список объектов, его столбцыпривязан к свойствам (bean или EL) объекта.Обычно это ObservableList, который поддерживает поддерживает модификации.
  • JComboBox - это строительная площадка.Привязка выбора в JList / JTable доступна и соответствует
  • , что делает (однократную) запись доступной для записи не такой уж большой проблемой (экспериментировал с адаптером для JXTable в инкубаторе).Не видели свойства только для записи, что вы имеете в виду?
  • Как и в случае с любой структурой привязки, вам нужны конвертеры для отображения типов значений (это не связано с рендерингом, хотя и играет роль в редактировании)

Очевидной текущей альтернативой является JGoodies Binding.Некоторое время не изучал, но видел, что недавно вышла новая версия, так что определенно находится в стадии разработки и использования.Будущей альтернативой может быть привязка к fx - она ​​все еще находится в зачаточном состоянии, ожидая, когда добрые души построят какую-то полезную среду вокруг своих базовых элементов.

...