2010-11-09 13 views
1

J'ai une application swing avec une zone de texte liée à une propriété sur mon modèle (il s'agit d'une liaison automatique READ_WRITE). Le modèle possède également une propriété isDirty que je veux lier à la propriété enabled d'un bouton.Liaison de haricots Swing: comment informer la cible que le modèle a changé?

Comment notifier correctement la liaison lorsque je change l'état de isDirty.

Voici mon code de liaison:

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

Quelle est la bonne façon d'ajouter cette notification?

Répondre

0

Fondamentalement, le modèle devrait avoir les méthodes

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

regard sur la PropertyChangeSupport de classe, cette classe ont mises en œuvre des méthodes ci-dessus.

Dans le modèle, la méthode setDirty(boolean) devrait être mis en œuvre comme ceci:

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

espoir qui aide

0

Vous pouvez utiliser PropertyChangeSupport pour mettre en œuvre facilement le soutien pour la notification de changement de propriété. La documentation sur le lien fourni a un exemple de comment l'installer et l'utiliser.