Comment conserver l'index de ligne lorsque JTable a été trié par l'utilisateur?
J'ai une JTable qui a 1ère ligne vide. Maintenant, quand je sort de la table basée sur une colonne en cliquant sur la colonne, la ligne vide qui se passe au fond. Si je insérer quelque chose dans le vide de ligne et de faire le tri ensuite la ligne est placée en conséquence. Comment puis-je garder la trace de ses index de ligne, même quand elle est triée. J'ai besoin d'accéder à cette ligne, mais si l'utilisateur ne le tri puis-je perdre de l'index de ligne, car il n'est plus le 1er rang.
source d'informationauteur nits.kk
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes à l'aide de la
TableRowSorter
trucs ajoutés dans la version 6 de Java, je pense que ce que vous avez besoin de regarder qui sont les méthodesconvertRowIndexToModel
etconvertRowIndexToView
dans leRowSorter
Classe. Vous feriez quelque chose commetable.getRowSorter().convertRowIndexToView(0)
pour savoir qui de la ligne visible de l'indice est en fait la ligne d'indice 0 à partir de votre modèle.
Edit: Comme Tulskiy souligné dans les commentaires, cela peut provoquer un NullPointerException si aucune ligne trieur est affecté à la table. Mieux utiliser les méthodes directement sur JTable au lieu de cela, par exemple,
table.convertRowIndexToView(0)
JTable.convertRowIndexToView()
vous renverra un indice de la ligne dans la vue en fonction de son index dans le modèle.JTable.convertRowIndexToModel()
fait le contraire.SOLUTION 1
Il y a un problème lors de l'utilisation de
jTable1.convertRowIndexToModel(jTable1.getSelectedRow())
si vous trier les valeurs en fonction de la date ou l'heure de retour des valeurs incorrectes de laconvertRowIndexToView(0)
donc utiliserconvertRowIndexToModel(0)
.SOLUTION 2
Cela permettra de récupérer à partir du nouveau modèle lors du tri.
Cela permettra de récupérer la valeur en fonction de l'indice d'origine, même lorsque triés.