listener de modification [java] - Java - Programmation
Marsh Posté le 11-04-2005 à 18:44:12
Bonjour, 
 
Voici une solution basique, sans Listener, mais qui ne convient que dans les cas simples. 
 
Si l'instance de B est connue de A (par exemple créée par A ou passée en paramètre à A), il suffit : 
 
(1) de créer dans A une méthode incrementeCompteur(int i) qui incrémente le compteur de i unités ; 
 
(2) de toujours passer par cette méthode pour incrémenter le compteur (ne pas faire de "compteur += 1" ailleurs) ; 
 
(3) dans cette méthode, de lancer une action sur B. 
 
Nicolas
Marsh Posté le 11-04-2005 à 23:26:51
 
Une méthode plus pure : 
 
 
| Code : 
 | 
 
 
Nicolas
Marsh Posté le 11-04-2005 à 23:29:40
je précise que ton exemple ne marche à partir de java1.5 (utilisation de l'autoboxing)
Marsh Posté le 12-04-2005 à 22:39:53
 
(1) Pour utiliser "directement et facilement" addPropertyChangeListener, ne faut-il pas que la classe écoutée dérive de JComponent et que l'on écoute des propriétés pré-établies ? 
 
API de JComponent : 
| public void addPropertyChangeListener(PropertyChangeListener listener)Adds a PropertyChangeListener to the listener list. The listener is registered for all bound properties of this class, including the following:   | 
 
Cf. également ce tutoriel : 
http://java.sun.com/docs/books/tut [...] tener.html 
 
(2) Dans le cas général, en s'inspirant de : 
http://forum.hardware.fr/forum2.ph [...] 90#t982255 
et 
http://www.imsc.res.in/Computer/lo [...] bound.html 
 
on peut probablement proposer pour notre exemple le code suivant : 
 
| Code : 
 | 
 
 
C'est tout de même un tout petit plus compliqué que Observer/Observable. 
Mais tout dépend de ce que l'on veut faire... 
 
Nicolas 
Marsh Posté le 11-04-2005 à 13:48:56
Bonjour,
En fait j 'ai une classe A avec un attribut :
int compteur;
ce que j aimerais c est que lorsque la valeur de cet attribut compteur est modifié une seconde classe B reagisse et effectue certaines operations.
J'ai lu ce sujet qui semble etre mon probleme :
http://forum.hardware.fr/forum2.ph [...] 90#t982255
mais n'etant pas une tete en Java je n'ai pas trop compris la solution proposée.
Merci pour votre attention.
Cordialement, Pata.