JTable le changement de la gestion des événements: trouver la source de la table de façon dynamique
J'ai mis en place mon propre gestionnaire d'événement et de l'ajouter à la sélection du modèle de la table:
table.getSelectionModel().addListSelectionListener(event);
Et mis en œuvre la méthode de "l'événement" (mentionné ci-dessus):
public void valueChanged(ListSelectionEvent e) {
log.debug("value changed");
}
Malheureusement, l'événement se déclenche deux fois si j'ai la chance de la sélection et il ne semble pas possible de trouver la table associée, parce que les e.getSource fournit javax.swing.DefaultListSelectionModel.
Donc mes questions sont:
1) Pourquoi est-il le feu à deux reprises, bien que l'eventListener n'est enregistré qu'une seule fois?
2) Comment puis-je trouver de la table pour laquelle la sélection s'applique? Le DefaultListSelectionModel ne semble pas offrir toute getSource() ou similaire.
Merci beaucoup!
OriginalL'auteur MrG | 2008-12-17
Vous devez vous connecter pour publier un commentaire.
1) je pense que vous trouverez cela déclenche une seule fois en faveur de la non-sélection de l'ancienne sélection et une fois pour la sélection de la nouvelle sélection. Si vous vous connectez les détails de l'événement, vous devez voir ce qui se passe exactement. Je ne me souviens pas des détails, peut-être que c'est faux. De toute façon, vous devriez être en mesure d'appeler getValueIsAdjusting() sur l'événement et d'utiliser uniquement le dernier de la chaîne (c'est à dire quand elle renvoie false).
2) Vous ne devriez normalement pas besoin de le faire, mais autant que je sache, la seule façon de le faire est de créer votre Auditeur spécifiquement pour la table (c'est à dire passer de la table pour le constructeur et s'en souvenir).
OriginalL'auteur Draemon
Grâce Draemon..Il Fonctionne très bien....
Notre Code
Merci Par
TF Équipe
OriginalL'auteur Think Force
Depuis plus d'un JTable (ou d'un autre composant, je suppose) peuvent partager le même modèle de sélection, il n'est pas logique de demander à la JTable de l'événement. C'est la même raison que vous ne pouvez pas récupérer un JTable à partir d'un TableModel. Comme Draemon suggère, stocker la référence à la JTable (ou de la rendre accessible à) votre classe écouteur.
OriginalL'auteur Dave Ray