Связывание Swing-бинов: как уведомить цель об изменении модели? - PullRequest
1 голос
/ 09 ноября 2010

У меня есть приложение Swing с текстовым полем, привязанным к свойству моей модели (это READ_WRITE AutoBinding).Модель также имеет свойство isDirty, которое я хочу связать со свойством кнопки.

Как правильно уведомить привязку при изменении состояния isDirty.

Вот мой код привязки:

BeanProperty<PaChannelConfig, Boolean> paChannelConfigBeanProperty_1 = 
                      BeanProperty.create("dirty");
BeanProperty<JButton, Boolean> jButtonBeanProperty = 
                      BeanProperty.create("enabled");
AutoBinding<PaChannelConfig, Boolean, JButton, Boolean> autoBinding_2 = 
                      Bindings.createAutoBinding(
                                       UpdateStrategy.READ, 
                                       model, 
                                       paChannelConfigBeanProperty_1, 
                                       btnApply, jButtonBeanProperty);
autoBinding_2.bind();

Как правильно добавить это уведомление?

Ответы [ 2 ]

0 голосов
/ 06 января 2013

Вы можете использовать PropertyChangeSupport , чтобы легко реализовать поддержку уведомлений об изменениях свойств. В документации по приведенной ссылке есть пример того, как ее настроить и использовать.

0 голосов
/ 01 марта 2011

По существу, модель должна иметь методы

addPropertyChangeListener(PropertyChangeListener)
removePropertyChangeListener(PropertyChangeListener)
firePropertyChange(PropertyChangeEvent)

. Посмотрите на класс PropertyChangeSupport, этот класс имеет реализации методов, описанных выше.

В модели метод setDirty(boolean)должно быть реализовано так:

public void setDirty(boolean dirty) {
    boolean old = this.dirty;
    this.dirty = dirty;
    firePropertyChange(new PropertyChangeEvent("dirty", old, dirty));
}

надеюсь, что поможет

...