Mam JTable, który ma puste wiersza 1st. Teraz, kiedy sortuję tabelę w oparciu o kolumnę, klikając tę kolumnę, pusty wiersz jest u dołu. Jeśli wstawię coś do pustego wiersza i wykonam sortowanie, wiersz zostanie odpowiednio umieszczony. Jak śledzić indeks wiersza, nawet jeśli jest on sortowany. Potrzebuję dostępu do tego wiersza, ale jeśli użytkownik sortuje, tracę indeks wiersza, ponieważ nie jest to już pierwszy wiersz.Jak śledzić indeks wiersza, gdy JTable zostało posortowane przez użytkownika?
Odpowiedz
Zakładając, że używasz rzeczy TableRowSorter
dodaną w Javie 6, myślę, że to, co trzeba spojrzeć na to sposoby convertRowIndexToModel
i convertRowIndexToView
w RowSorter
klasy. Można by zrobić coś takiego
table.getRowSorter().convertRowIndexToView(0)
aby dowiedzieć się, który wskaźnik widoczny wiersz jest rzeczywiście indeksu rzędu 0 od modelu.
Edytuj: Jak zauważył Tulskiy w komentarzach, może to spowodować wyjątek NullPointerException, jeśli do tabeli nie zostanie przypisany żaden sorter rzędów. Lepiej używać metod bezpośrednio w JTable, np. table.convertRowIndexToView(0)
JTable.convertRowIndexToView()
spowoduje wyświetlenie indeksu wiersza w widoku na podstawie indeksu w modelu. JTable.convertRowIndexToModel()
zrobi się odwrotnie.
@Krishna Kumar: bez problemu. Właśnie zdałem sobie sprawę, że podałem zły opis metody :) –
Jest OK ... Właśnie zrobiłem table.getRowSorter(). ConvertRowIndexToView (0) i mój cel został rozwiązany ... :) –
ROZWIĄZANIE 1
Jest jakiś problem przy korzystaniu jTable1.convertRowIndexToModel(jTable1.getSelectedRow())
jeśli sortować według wartości daty lub czasu powróci niepoprawne wartości z convertRowIndexToView(0)
zatem wykorzystać convertRowIndexToModel(0)
.
ROZWIĄZANIE 2
Pozwoli to odzyskać od nowego modelu, gdy sortowane.
jTable1.getValueAt(jTable1.getSelectedRow(), 0);
Spowoduje to pobranie wartości zgodnej z oryginalnym indeksem, nawet po posortowaniu.
((DefaultTableModel)jTable1.getModel()).getValuAt(jTable1.getSelectedRow(), 0);
- 1. Przenoszenie wiersza w JTable
- 2. Jak mogę zachować zdefiniowane przez użytkownika szerokości kolumn w JTable?
- 3. JTable poprawny numer wiersza po filtrowaniu
- 4. Jak zaimplementować jtable ze zmienną wysokością wiersza
- 5. Czy Python śledzi, kiedy coś zostało posortowane, wewnętrznie?
- 6. Wyłącz edycję użytkownika w JTable
- 7. Pobierz indeks wiersza tabeli bieżącego wiersza
- 8. Jak śledzić lokalizację użytkownika za pomocą MapKit
- 9. Jak śledzić czas użytkownika na stronie
- 10. Ustawianie wysokości wiersza w JTable w java
- 11. indeks wiersza w GridView rowCommand
- 12. co zostało zrobione, gdy URL.openconnection()?
- 13. Jak niezawodnie uzyskać indeksu wiersza w JTable z MouseEvent?
- 14. Jak programowo usunąć zaznaczenie aktualnie wybranego wiersza w JTable (swing)?
- 15. Jak śledzić tworzenie rejestracji użytkownika jako konwersji w Google Analytics
- 16. Android Czy chcesz śledzić użytkownika na Twitterze?
- 17. Jak zmienić globalną wysokość JTable?
- 18. JavaFX 2: Uzyskaj indeks wiersza TableCell
- 19. Jak mogę śledzić użytkownika Twittera korzystającego z Twitter4j framework?
- 20. Bądź UITableView przewijania przez indeks
- 21. JSF 2 dataTable indeks wiersza bez DataModel
- 22. Jak uzyskać indeks elementu przez xpath?
- 23. python: zmiana indeks wiersza ramki danych pandy
- 24. Jak wyświetlić indeks wiersza w JSF elementu datatable
- 25. Indeks wiersza składnika LinkButton w GridView
- 26. Jak ustawić wiersz JTable w stan "niezaznaczony" po wybraniu dowolnego wiersza w tej tabeli?
- 27. Alarm, gdy okno przeglądarki zostało przypadkowo zamknięte
- 28. Jak śledzić żądania SOAP, które są wysyłane przez webServiceTemplate
- 29. jak wyczyścić JTable
- 30. Jak ustawić JTable na edytowanej komórce
Wygląda jak tulskiy wskazał, że możesz po prostu wywołać table.convertRowIndexToView, który po prostu przekazuje dalej połączenie do rowSorter, ale jest wygodniejszy. Nie znam się zbyt dobrze na tych API - jestem przyzwyczajony do pisania niestandardowego sortowania przed Java 6 ... yech: p – heavi5ide
twój kod może dać NPE, jeśli nie zdefiniowano sortera ... i miałem zbyt wiele problemów z wbudowany sortujący i niestandardowy model tabeli, aby uniknąć tego w przyszłości. –