2010-07-13 7 views
0

Je dois stocker un événement de clic de souris chaque fois qu'un utilisateur clique sur une colonne de table pour le tri.Redémarrage de l'événement MouseListener

Je sauve essentiellement la MouseEven:

public void mouseClicked(MouseEvent e_) 

je stocke e_ sur une variable globale plus tard, je peux tirer ce même événement et trier le tableau à la précédente action de tri de l'utilisateur.

Mais lorsque je déclenche manuellement l'événement de souris stocké précédent, la table n'est pas triée.

Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(_mouseEvent); 

Donc, fondamentalement, c'est comme cela que je veux que ça fonctionne. L'utilisateur clique sur une colonne JTable pour le tri. Je stocke le MouseEvent créé sur une variable globale. Lorsque la JTable est recréée, j'ai besoin qu'elle soit définie sur l'action de tri précédente.
C'est pourquoi j'ai besoin de re-fire le MouseEvent stocké, mais il ne fonctionne pas. Des idées?

+1

Le fait que vous recréiez la table lorsque l'utilisateur clique sur le TableHeader pour le tri me rend mal à l'aise, cela ressemble à un code-odeur/avertissement. – Syntax

Répondre

1

Cela n'a rien à voir avec un événement de souris. Vous devez stocker l'état de votre trieur de lignes. Jetez un oeil à RowSorter API. Vous pouvez récupérer et restaurer cet état en utilisant les méthodes getSortKeys() et setSortKeys(). Évidemment, vous pouvez obtenir RowSorter à partir de votre table en utilisant la méthode getRowSorter().

Espérons que cela a du sens.

+0

Merci, c'est logique. Je vais essayer. – Marquinio

+0

Yup qui a fait le tour merci. – Marquinio

0

Voir la méthode sort() de DefaultRowSorter.

Questions connexes