[Java] Récupérer listeners d'un composant

Résolu
Thyjukil -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

J'aurais besoin de récupérer un listener placé sur un JTextArea. J'ai donc utilisé :
ListenerTextModifications [] ltm = Interface.this.textAreaName.getListeners(ListenerTextModifications.class);

Seulement si je tente d'utiliser ltm, j'obtiens une erreur avec un pointeur vide. Après vérification, ltm.length me renvoie 0.
J'ai déclaré le listener de cette façon :
ListenerTextModifications ltm = new ListenerTextModifications();
this.textAreaName.getDocument().addDocumentListener(ltm);

Est-ce que je m'y prends mal ou est-ce qu'il y a une autre façon de faire pour récupérer ce listener ?

Merci.
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Vu ton morceau de code tu as ajouté le listener sur getDocument, pas sur textAreaName.
Pour être cohérent, il faudrait donc faire le getListeners sur le getDocument, ou alors ajouter le listener directement sur textAreaName...

Evidemment, ici on n'a pas assez d'information pour te donner une réponse plus précise.

Note : c'est bizarre d'avoir un this en plein milieu de Interface.this.textAreaNameLa confiance n'exclut pas le contrôle
0
Thyjukil
 
Eclipse me propose : ((JComponent) InterfaceAcheteurWP.this.taCause.getDocument()).getListeners(ControleurTextModifications.class);
Est-ce que c'est la bonne façon de faire dans ce cas?

Pour le this en plein milieu, je n'ai fait qu'appliquer mes cours d'amphi et mes TPs de Java :)
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne sais pas à quoi correspond "taCause" ni son "getDocument" mais il faut récupérer les Listeners là où tu les a ajouté (en supposant que tu les ai bien ajouté au bon endroit).
En plus on ne sait pas ce que tu veux faire, mais perso je ne me suis jamais servi de getListeners, il y a surement quelque chose qui ne vas pas dans ce que tu cherches à faire...

Pour le this c'est vraiment bizarre, il faudrait voir le code dans son contexte, mais lorsque je vois "InterfaceAcheteurWP.this", je lis "this" comme un membre static de la classe InterfaceAcheteurWP, alors que "this" est par définition la référence de l'objet courant, et ne peux donc pas être static !!!
Je pense que tu peux remplacer "InterfaceAcheteurWP.this.taCause" par "taCause", ce serait mieux...
0
Thyjukil
 
"taCause" est un deuxième JTextArea pour lequel je veux récupérer le listener que j'ai placé sur son "Document".

Le "InterfaceAcheteurWP.this.taCause" est placé dans un actionPerformed et me sert à récupérer le texte de l'objet courant uniquement, je ne veux pas le mettre en static puisque dans ce cas il ne correspondrait pas forcément à ce que je cherche à récupérer,

Merci quand même de ton aide, je vais me débrouiller autrement ! :)
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Dans l'actionPerformed, tu dois avoir un ActionEvent en paramètre, tu peux utiliser la méthode getSource, qui te renverra l'objet sur lequel l'évènement s'est produit, dans ce cas tu peux récupérer le texte de l'objet.
Pour le Document, je pense que tu t'y prends mal, tu devrais plutôt ajouter le listener sur le JTextArea, mais là encore ça dépend vraiment de ce que tu veux faire, mais tu n'est pas très précis...
0