comment faire pour supprimer MouseListener / ActionListener sur un component swing jtextfield
J'ai le code suivant en ajoutant un ActionListener à un component swing jtextfield:
chatInput.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
chatInputMouseClicked(evt);
}
});
Maintenant, comment puis-je supprimer cette MouseListener à l'aide de chatInput.removeMouseListener()
, puisque cette fonction a besoin d'un argument?
OriginalL'auteur mithun1538 | 2010-04-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envisager de 3 approches:
1) Enregistrer la référence de votre auditeur avant l'ajout de sorte que vous pouvez le supprimer plus tard:
2) Vous pouvez obtenir tous certains des écouteurs d'événement avec le correspondant de méthodes comme:
ou
Voici la javadoc de la première et deuxième méthodes.
Si vous pouvez identifier parmi tous les auditeurs celui sur lequel vous souhaitez supprimer, ou si vous souhaitez supprimer tous les auditeurs de cette approche peut aider.
3), Vous pouvez utiliser une variable booléenne qui sera 'pour désactiver votre écoute. Mais vous devriez noter que la variable doit être un champ de l'extérieur de la classe:
Je préfère la troisième, car il donne de la flexibilité et si je veux revenir sur l'écouteur de souris de nouveau, je n'aurez pas besoin de créer un nouvel objet.
dispose()
méthode). Pour désactiver temporairement un auditeur, j'ai utilisé la troisième option. C'est la plupart du temps nécessaire pour prévenir la récurrence. E. g. lorsqu'un auditeur qui déclenche sur des modifications du texte conduit à un changement dans le même texte (pour quelque raison que ce soit), j'ai désactiver l'auditeur au début de sa méthode d'écoute et de permettre à la fin.Je suppose que je dois créer un MouseListener avant de l'utiliser. Je ne peux pas enlever anonyme MouseListeners.
OriginalL'auteur Roman