2011-12-22 7 views
0

Я новичок в SwingBindings.Как связать свойство композиционного объекта

У меня есть список компонентов, названных Project Каждый проект имеет ссылку на другой компонент с именем Config. Каждый Config имеет 2 атрибута, как я могу привязать с swingbindings эти два атрибута компонента bean Config к компонентам, составляющим jframe?

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

+0

Не знаете, что вы подразумеваете под «SwingBinding» - разве вы случайно имеете в виду «beansbinding»? (с/или без Netbeans?) – kleopatra

ответ

2

Попробуйте это:

  1. Создайте свой собственный визуализатор клеток, который реализует ListCellRenderer.
  2. Назначьте средство визуализации для comboBox, содержащего проекты. (comboBox.setRenderer(...))
  3. Теперь вы можете напрямую добавить экземпляр проекта в comboBox, а также получить его обратно.
  4. В ListCellRenderer в getListCellRendererComponent(.....) mehod cast value (Второй аргумент) для Project и возвращает соответствующее значение, которое вы хотите отобразить в comboBox. (Возможно, это название/название проекта)
  5. Добавить слушателя в comboBox. (Может быть ItemListener) и в своем методе действий получить выделенный объект comboBox, который будет вашим объектом Project.
  6. Из этого объекта проекта вы можете легко получить Config (как вы сказали, у вас есть ссылка на объект Config в объекте Project) и установить данные в фрейме.
+0

+1 хорошее объяснение для настраиваемого средства визуализации :-) Мое предположение, OP действительно хочет привязку ... – kleopatra

+0

Благодарим вас за ответ, но у меня это получается

 org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jcbProject, org.jdesktop.beansbinding.ELProperty.create("${selectedItem.config.updateDatabase}"), jCheckBox1, org.jdesktop.beansbinding.BeanProperty.create("selected")); bindingGroup.addBinding(binding); 

+0

выражение selectedItem.config.updateDatabase не работало, и я обнаружил, что статическая переменная формирует запреты, которые возвращают имя свойства, должна содержать строку, которая должна быть точно так же, как имя переменной. Спасибо. –

Смежные вопросы