Ho una tabella J che ha una prima riga vuota. Ora, quando ordino la tabella in base a una colonna, facendo clic su quella colonna, la riga vuota va in basso. Se inserisco qualcosa nella riga vuota e faccio l'ordinamento, la riga viene posizionata di conseguenza. Come faccio a tenere traccia del suo indice di riga anche quando è ordinato. Ho bisogno di accedere a quella riga, ma se l'utente fa l'ordinamento, quindi perdere l'indice di riga in quanto non è più la prima riga.Come tenere traccia dell'indice di riga quando JTable è stato ordinato dall'utente?
risposta
Supponendo che si sta utilizzando il TableRowSorter
roba aggiunto in Java 6, penso che quello che avete bisogno di guardare sono i metodi convertRowIndexToModel
e convertRowIndexToView
nel RowSorter
classe. Faresti fare qualcosa di simile
table.getRowSorter().convertRowIndexToView(0)
per scoprire quale indice di riga visibile è in realtà riga di indice 0 dal modello.
Modifica: come indicato da Tulskiy nei commenti, ciò potrebbe causare una NullPointerException se alla tabella non è assegnato alcun ordinatore di righe. Meglio utilizzare i metodi direttamente su JTable, ad es. table.convertRowIndexToView(0)
JTable.convertRowIndexToView()
restituirà un indice della riga nella vista in base all'indice nel modello. JTable.convertRowIndexToModel()
farà l'opposto.
@ Krishna Kumar: nessun problema. Ho appena realizzato di aver fornito una descrizione errata del metodo :) –
OK ... Ho appena fatto table.getRowSorter(). ConvertRowIndexToView (0) e il mio scopo è stato risolto ... :) –
SOLUZIONE 1
C'è qualche problema quando si utilizza jTable1.convertRowIndexToModel(jTable1.getSelectedRow())
se si ordinano i valori in base alla data o l'ora restituirà valori errati dal convertRowIndexToView(0)
quindi utilizzare convertRowIndexToModel(0)
.
SOLUZIONE 2
Questo recupererà dal nuovo modello quando ordinate.
jTable1.getValueAt(jTable1.getSelectedRow(), 0);
Questo recupererà il valore in base all'indice originale anche se ordinato.
((DefaultTableModel)jTable1.getModel()).getValuAt(jTable1.getSelectedRow(), 0);
- 1. rapido. AVPlayer. Come tenere traccia quando la canzone è finita?
- 2. Tenere traccia dell'indice corrente quando si applica
- 3. Come tenere traccia degli utenti tra domini?
- 4. Come tenere traccia dei messaggi in Android?
- 5. Come tenere traccia degli eventi nell'estensione?
- 6. Tenere traccia delle modifiche - Django
- 7. Tenere traccia delle classi di utilità
- 8. È possibile tenere traccia di quando un'applicazione Android è stata chiusa?
- 9. Tenere traccia di indice in rapida enumerazione
- 10. Come tenere traccia dello stato OpenGL tra le chiamate di funzione?
- 11. Implementazione intestazione riga JTable
- 12. Tenere traccia degli utenti registrati in PHP
- 13. Come tenere traccia degli eventi di clic con google analytics
- 14. Come tenere traccia di più eventi tattili in Libgdx?
- 15. Come si usa ManagementEventWatcher per tenere traccia della sospensione/ripresa?
- 16. Come tenere traccia del conteggio delle istanze di un tipo?
- 17. Come tenere traccia delle notifiche di sapere quando mostrare una notifica di sintesi
- 18. Come tenere traccia degli ascoltatori in Firebase su Android?
- 19. Seleziona una riga in JTable
- 20. Come tenere traccia delle prestazioni del server IIS
- 21. Come tenere traccia delle applicazioni WinRT (in Win32 era semplice)?
- 22. Come tenere traccia della profondità nella prima ricerca?
- 23. Come rimuovere una riga da JTable?
- 24. correttamente ottenere i dati da un (ordinato) JTable
- 25. Trova la riga JTable su cui è stato richiamato un menu popup
- 26. Come tenere traccia della modifica della data in Java
- 27. Come tenere traccia degli eventi personalizzati in paper_trail?
- 28. Spostamento di una riga in JTable
- 29. Tenere traccia degli id in NOSQL db (firebase)
- 30. Utilizzo di Google Analytics per tenere traccia delle richieste AJAX
Sembra che tulskiy abbia sottolineato che puoi semplicemente chiamare table.convertRowIndexToView, che inoltrerà comunque la chiamata al rowSorter, ma è più conveniente. Non ho molta familiarità con queste API - Sono abituato a scrivere l'ordinamento personalizzato prima di Java 6 ... yech: p – heavi5ide
il tuo codice può dare un NPE se non è stato definito alcun sorter ... e ho avuto troppi problemi con ordinamento integrato e modello di tabella personalizzato per evitarlo in futuro. –