2010-04-17 10 views
13

J'ai un Jtable sur lequel j'ai appelé la méthode table1.setAutoCreateRowSorter(true);. Donc ça marche bien. Mais j'ai aussi un methos dans ma classe JFrame qui est déclenché quand j'appuie sur un bouton. Il obtient les index de lignes sélectionnées en utilisant ce code int selectedRows[] = this.table1.getSelectedRows();. Et affiche une fenêtre d'édition pour la première ligne correspondant à l'intervalle sélectionné.Java: l'index des lignes sélectionnées ne change pas lorsqu'il est trié

Le problème est que si je ne clique pas sur les en-têtes des colonnes (je veux dire que je ne les sorte pas du tout), ma méthode fonctionne parfaitement. Mais quand je trier la rangée, les index des rangées ne semblent pas changer du tout - résultant ainsi une fenêtre d'édition pour l'ancienne rangée qui était initialement dans cette position avant de faire n'importe quelle sorte.

J'utilise JDK 6 pourrait-on donner un pourboire à ma?

Répondre

17

Le modèle sous-jacent ne change pas d'ordre. Seule la vue change. Vous pouvez en lire plus à ce sujet dans Sun's tutorial. Vous devrez utiliser JTable.convertRowIndexToView() et JTable.convertRowIndexToModel().

+0

Merci les gars maintenant je peux trouver la bonne valeur sélectionnée en utilisant 'table1.getModel(). GetValueAt (table1.convertRowIndexToView (selectedRows [i]), 0);' – adrian7

5

Vous devez utiliser convertRowIndexToView(int) et convertRowIndexToModel(int) pour convertir les indices de modèle (données sous-jacentes) et les indices de vue.