Swing beans绑定:如何通知目标模型已更改?

时间:2010-11-09 18:59:26

标签: swing binding

我有一个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 :(得分:0)

基本上,模型应该有方法

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));
}

希望有所帮助

答案 1 :(得分:0)

您可以使用PropertyChangeSupport轻松实施对属性更改通知的支持。提供的链接中的文档有一个如何设置和使用它的示例。