Bonjours,
J'ai trouvé un tuto sur la création de listener mais je l'ai pas tellement comprise. Je souhaiterai savoir s'il ya quelqu'un qui pourrai m'aider sur le sujet
Bonjours,
J'ai trouvé un tuto sur la création de listener mais je l'ai pas tellement comprise. Je souhaiterai savoir s'il ya quelqu'un qui pourrai m'aider sur le sujet
Un peu vague comme demande d'aide.
On ne sais pas ce que tu ne comprend pas.
Voici deux tutos bien sympa qui devraient t'aider
http://java.developpez.com/faq/gui/?...wing_listeners
http://rom.developpez.com/java-listeners/
Un conseil : penses toujours à abstract et extends
merci de vos réponses, j'ai fais quelque recherche qui m'ont aider a comprendre le fonctionnement.
Je ne comprends pas. Tu cherches à utiliser une système de listener ou à en faire un ?
ce que je voulais faire c'est de créer des listeners sur des fonctions bien précises, je récupère la donnée en même temps quelle change.
en ce qui concerne mes idées, j'ai réussi a le faire en utilisant le tuto créer ces propre listener en java
La personne en question n'avait pas trouvé de tuto intuitif, après la réponse de voyager75, elle a mieux compris le fonctionnement du Listener en Java voilà.
Ce n'était pas un cas particulier, cette personne voulait simplement comprendre les listeners. Je pense que le débat est clos![]()
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
hello
alors, si je récapitule
imaginons, j'ai une classe principale "go"
dans "go", j'aimerais écouter le paramètre "param": lorsque "param" change (il peut être modifié par un thread), la procédure "exécuter" est lancée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class go { int param; public static void main(final String[] args) {...} void exécuter(){...} }
Plutôt que de faire tourner une boucle dans "main" ou dans un thread, optons pour la solution listener
donc, je crée une interface "écouteur"
et je modifie "go":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 interface écouteur { public void leParamètreAbougé(); }
évidemment, ca ne marche pas, il faut dire que c'est "param" qui est écouté et doit permettre de lancer "leParamètreAbougé". Mais où, comment? Bref, quelles sont mes erreurs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class go implements écouteur { int param; public static void main(final String[] args) {...} void exécuter(){...} public void leParamètreAbougé() {exécuter();} }
le principe des observer / observable est très simple :
- L'observer doit s'enregistrer auprès de l'observable
- L'état de l'observable change
- L'observable parcours la liste de ses observer et sur chacun appel la méthode le paramètreABougé()
Donc dans ton cas. tu doit remplacer :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class Go implements Ecouteur{ int param ... }
PS : quelques remarques sur ton code :
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 public classs Param{ private List<Ecouteur> ecouteurs = new ArrayList<Ecouteur>() private int param; public void setParam(int param){ this.param = param; notifierEcouteurs(); } public int getParam(){ return param; } public ajouterEcouteur(Ecouteur e){ ecouteurs.add(e); } public void notifierEcouteurs(){ for(Ecouteur e : ecouteurs){ ecouteur.leParametreAChange(); } } } public class Go implements Ecouteur{ private Param param = new Param(); public Go(){ param.ajouterEcouteur(this); } ... }
- évites d'utiliser des caractères accentués dans ton code
- Le nom d'une classe/interface commence par une majuscule
ok, j'ai compris comment marche ce "implements" et en fait ce n'est pas ce que je veux
en fait, le paramètre "param" n'est pas modifié par mon programme mais par un élément extérieur au programme, une carte électronique avec des entrées sorties, branché en usb. C'est un thread qui s'occupe de ces entrées-sorties mais à aucun moment je ne peux appeler "setParam" de la classe param
Ce que j'aimerais faire, c'est comme pour la souris, comme si je cliquais, j'aimerais que lorsque "param" est modifié (dans un premier temps, imaginons que "param" est binaire) un 'actionListener' se déclenche
bon en fit je vais ouvrir un nouveau sujet: http://www.developpez.net/forums/d11...e/#post6162327
Partager