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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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