/ / Est-il possible d'avoir un seul auditeur de document pour plusieurs champs de texte dans Swing - java, swing, jtable, auditeur, jtextfield

Est-il possible d'avoir un seul auditeur de document pour plusieurs champs de texte dans Swing - java, swing, jtable, auditeur, jtextfield

J'ai 12 filtres pour 12 colonnes sur une JTable. Chaque filtre est un TextField de type JTextField. Chaque fois qu'un utilisateur entre les données dans le filtre de zone de texte, la recherche est effectuée.

Exemple: Supposons que j'ai 3 colonnes et 3 zones de texte au-dessus d'eux comme filtres. Maintenant, tout ce qui est tapé dans l'une des zones de texte que mon filtrage de table doit avoir lieu. Ça se passe très bien.

╔═════════════╦═════════════╦═════════════╗
║ [TextField] ║ [TextField] ║ [TextField] ║
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╠═════════════╬═════════════╬═════════════╣
...           ...           ...
╠═════════════╬═════════════╬═════════════╣
║             ║             ║             ║
╚═════════════╩═════════════╩═════════════╝

L’écouteur de champ de texte de chaque champ de texte ressemble à ceci,

textField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) { method(); }
public void removeUpdate(DocumentEvent e) { method(); }
public void insertUpdate(DocumentEvent e) { method(); }
};

Ma question est la suivante: je répète ce code pour chacun des 12 champs de texte, ce qui ne m'a pas vraiment plu. Est-ce la seule façon dont nous avons? ou quelqu'un peut-il me proposer un meilleur moyen?

Réponses:

8 pour la réponse № 1
  • Passez d'une classe anonyme à une classe interne et attachez le même écouteur à chaque champ. La source est contenue dans l'événement
  • Faites-en une classe séparée et continuez à utiliser des écouteurs distincts pour chaque champ. Evite au moins la duplication de code

Voir ce tutoriel pour un exemple d'une classe intérieure