[beans] PropertyChangeSupport à t'il un fonctionnement spécial ?
Bonjour,
J'avait besoin de propager des évènements lorsqu'une propriété d'un bean était modifiée, j'ai donc étendu la classe 'java.beans.PropertyChangeSupport' et écris les code qui vas avec.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public MaClasse extends PropertyChangeSuport {
private MonObjet monObjet;
public MaClasse() {
super(this);
monObjet = new MonObjet();
}
...
public void modifieLeNom(){
String nom = monObjet.getNom();
monObjet.setNom("truc");
firePropertyChange("nom", nom, monObjet.getNom()) ;
}
...
}
public MaClasseQuiEcoute {
...
MaClasse mc = new MaClasse();
mc.addPropertyChangeListener(new InterenalPropertyChangeListener());
mc.modifieLeNom();
...
private class InternalPropertyChangeListener implments PropertyListener {
public void propertyChange(PropertyChangeEvent evt){
System.out.println("Change");
}
}
} |
Mais je n'ai jamais vu apparaitre "Change" dans ma console. Aprés des centaines de cheveux perdus, et minutes passées à débugger j'ai modifie ma tactique.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public MaClasse {
protected final EventListenerList listeners = new EventListenerList();
...
String nom = monObjet.getNom();
monObjet.setNom("truc");
firePropertyChange("nom", nom, monObjet.getNom()) ;
...
protected void firePropertyChange(....) {
// le code qui vas bien (récupère les listeners, boucle et appelle la méthode)
}
} |
et la, tout fonctionne !
Y à t'il une particularité de'PropertyChangeSupport' que je n'ai pas saisie et qui pourrais expliquer la chose ?
Merci