Java | addActionListener
Résolu/Fermé
Xineroks
Messages postés
158
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
25 janvier 2014
-
13 avril 2012 à 13:09
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - 13 avril 2012 à 13:53
Xineroks Messages postés 158 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 25 janvier 2014 - 13 avril 2012 à 13:53
A voir également:
- Java | addActionListener
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
2 réponses
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
Modifié par KX le 13/04/2012 à 13:20
Modifié par KX le 13/04/2012 à 13:20
Déjà getName()=="boutBtn" ne peut pas fonctionner, car l'opérateur == compare les références sur l'objet, pas l'objet lui même, il faut utiliser la méthode equals.
Ensuite, ta méthode actionPerformed doit être défini dans une classe (éventuellement anonyme) qui étend de la classe ActionListener, et dont un objet est passé via un des Component (un bouton par exemple) avec la méthode addActionListener.
Mais pour accéder à l'intérieur du Listener, aux objets situés en dehors de la classe, il faudra que ceux-ci possèdent le mot-clé "final" ce qui assure qu'il n'y aura qu'une seule référence pour les représenter.
J'avoue que ça fait pas mal d'explications d'un coup, mais le code que tu nous as donné est trop incomplet pour qu'on puisse s'en servir et te montrer comment faire.
La confiance n'exclut pas le contrôle
Ensuite, ta méthode actionPerformed doit être défini dans une classe (éventuellement anonyme) qui étend de la classe ActionListener, et dont un objet est passé via un des Component (un bouton par exemple) avec la méthode addActionListener.
Mais pour accéder à l'intérieur du Listener, aux objets situés en dehors de la classe, il faudra que ceux-ci possèdent le mot-clé "final" ce qui assure qu'il n'y aura qu'une seule référence pour les représenter.
J'avoue que ça fait pas mal d'explications d'un coup, mais le code que tu nous as donné est trop incomplet pour qu'on puisse s'en servir et te montrer comment faire.
La confiance n'exclut pas le contrôle
Xineroks
Messages postés
158
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
25 janvier 2014
3
13 avril 2012 à 13:30
13 avril 2012 à 13:30
Tout d'abord Merci pour ta réponse qui est arrivée très rapidement.
Ensuite le "==" fonctionne, j'obtiens bien le message, mais c'est vrai que le equals est plus approprié, je vais donc l'utiliser.
Et pour la classe anonyme si je comprend bien je dois faire une classe qui hérite d'ActionListener.
Faire mes TextField de cette façon : final JTextField unTexte = new JTextField();
et lorsque que je fais un addActionListener sur le bouton, je met en paramètre mes TF ? Comme : boutBtn.addActionListener(this, unTexte, ...);
J'ai un peu de mal à concevoir la chose.
Pour le code je veux bien le poster entièrement, mais j'ai tendance à penser que si il y a trop de code on zappe direct.
Le voici pour les courageux ( s'agit uniquement de l'IHM ) :
https://pastebin.com/GgLEcA9k
Merci encore pour ces conseils,
Cordialement,
Xineroks
Ensuite le "==" fonctionne, j'obtiens bien le message, mais c'est vrai que le equals est plus approprié, je vais donc l'utiliser.
Et pour la classe anonyme si je comprend bien je dois faire une classe qui hérite d'ActionListener.
Faire mes TextField de cette façon : final JTextField unTexte = new JTextField();
et lorsque que je fais un addActionListener sur le bouton, je met en paramètre mes TF ? Comme : boutBtn.addActionListener(this, unTexte, ...);
J'ai un peu de mal à concevoir la chose.
Pour le code je veux bien le poster entièrement, mais j'ai tendance à penser que si il y a trop de code on zappe direct.
Le voici pour les courageux ( s'agit uniquement de l'IHM ) :
https://pastebin.com/GgLEcA9k
Merci encore pour ces conseils,
Cordialement,
Xineroks
Xineroks
Messages postés
158
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
25 janvier 2014
3
13 avril 2012 à 13:35
13 avril 2012 à 13:35
Ah, et pardon pour l'Edit, mais avec l'equals. Je dois bien faire obj.equals(boutBtn) ?
mais le soucis c'est que la aussi je n'ai pas acces à boutBtn. Ce qui s'arrangera certainement avec la nouvelle classe
mais le soucis c'est que la aussi je n'ai pas acces à boutBtn. Ce qui s'arrangera certainement avec la nouvelle classe
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
13 avril 2012 à 13:43
13 avril 2012 à 13:43
Quand on parle de classe anonyme ça veut dire que la classe n'est pas déclarée mais utilisée directement dans le code, c'est particulièrement pratique pour instancier des interfaces :
Remarque : lors de la compilation cette classe sera nommée Fenetre$1, c'est pour ça que l'on dit qu'elle est anonyme...
Faire ceci pour chaque bouton, est plus compréhensible, et plus propre, que de créer un ActionListener pour toute la JFrame. Entre autre parce que la JFrame est soumise à toute sortes d'évènements en permanence et que le traitement des if sur getSource va la ralentir inutilement.
boutBtn.addActionListener( new ActionListener() // Création "en live" d'un classe sans nom qui implémente l'interface ActionListener, et instanciation directe d'un objet de cette classe pour le passer en argument de la méthode. { @Override public void actionPerformed(ActionEvent e) { // ... } });
Remarque : lors de la compilation cette classe sera nommée Fenetre$1, c'est pour ça que l'on dit qu'elle est anonyme...
Faire ceci pour chaque bouton, est plus compréhensible, et plus propre, que de créer un ActionListener pour toute la JFrame. Entre autre parce que la JFrame est soumise à toute sortes d'évènements en permanence et que le traitement des if sur getSource va la ralentir inutilement.
Xineroks
Messages postés
158
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
25 janvier 2014
3
13 avril 2012 à 13:53
13 avril 2012 à 13:53
Ah, d'accord très bien, j'avais déjà vu ce genre de code, mais avec ce que j'avais vu en cours je pensais que ce n'était pas optimiser de faire une méthode pour chaque événement.
Je comprend mieux à présent.
Je te remercie vraiment pour ta réponse. Je vais donc tester et "Marquer comme résolu" sauf si problème =).
Je comprend mieux à présent.
Je te remercie vraiment pour ta réponse. Je vais donc tester et "Marquer comme résolu" sauf si problème =).