comment supprimer MouseListener / ActionListener sur un terrain de Jtext
chatInput.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
chatInputMouseClicked(evt);
}
});
maintenant, comment puis-je supprimer ce MouseListener en utilisant chatInput.removeMouseListener()
, puisque cette fonction a besoin d'un argument?
1 réponses
Vous pouvez envisager de 3 approches:
1) sauvegardez la référence de votre auditeur avant de l'Ajouter pour pouvoir la supprimer plus tard:
MouseListener ml = new MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
chatInputMouseClicked(evt);
}
};
chatInput.addMouseListener (ml);
...
chatInput.removeMouseListener (ml);
2) Vous pouvez obtenir tous certains écouteurs d'événements avec des méthodes correspondantes comme:
public MouseListener[] getMouseListeners()
ou
public EventListener[] getListeners(Class listenerType)
Voici la javadoc premier et deuxième méthodes. Si vous pouvez identifier parmi tous les auditeurs celui sur lequel vous souhaitez supprimer, ou si vous voulez supprimer tous les auditeurs cette approche peut aider.
3) vous pouvez utiliser une variable booléenne qui "éteindra" votre auditeur. Mais vous devriez remarquer que la variable devrait être un champ de la classe externe:
private boolean mouseListenerIsActive;
public void doSmthWithMouseListeners () {
mouseListenerIsActive = true;
chatInput.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (mouseListenerIsActive) {
chatInputMouseClicked(evt);
}
}
});
}
public void stopMouseListner () {
mouseListenerIsActive = false;
}
je préférerais le troisième parce qu'il donne une certaine flexibilité et si je veux relancer l'écouteur de souris je n'aurai pas besoin de créer un nouvel objet.