2010-04-17 5 views
13

Ho un Jtable su cui ho chiamato il metodo table1.setAutoCreateRowSorter(true);. Quindi funziona bene. Ma ho anche un methos nella mia classe JFrame che viene attivata quando premo un pulsante. Ottiene gli indici delle righe selezionate utilizzando questo codice int selectedRows[] = this.table1.getSelectedRows();. E visualizza una finestra di modifica per la prima riga corrispondente nell'intervallo selezionato.Java: l'indice delle righe selezionate non cambia quando ordinato

Il problema è che se non faccio clic sulle intestazioni di colonna (cioè non li sorte affatto) il mio metodo funziona perfettamente. Ma quando ordino la riga, gli indici delle righe non sembrano affatto cambiare - risultando così una finestra di modifica per la vecchia riga che inizialmente era in quella posizione prima di fare qualsiasi tipo.

Sto usando JDK 6 come si può dare un consiglio?

risposta

17

Il modello sottostante non cambia ordine. Cambia solo la vista Puoi leggere ulteriori informazioni a riguardo in Sun's tutorial. Sarà necessario utilizzare JTable.convertRowIndexToView() e JTable.convertRowIndexToModel().

+0

Grazie ragazzi ora posso trovare il valore selezionato corretto usando 'table1.getModel(). GetValueAt (table1.convertRowIndexToView (selectedRows [i]), 0);' – adrian7

5

È necessario utilizzare convertRowIndexToView(int) e convertRowIndexToModel(int) per convertire gli indici del modello (dati sottostanti) e visualizzare gli indici.