Ich habe eine JTable, in der benutzerdefinierte Sortierung für Daten angewendet wird. Wenn die Tabelle zu Beginn gestartet wird, enthält sie nur die Spalten mit String-Daten, so dass die Sortierung in Ordnung ist. Nachdem die Tabellenstruktur geändert wurde (neue Spalten werden hinzugefügt, die eine Kombination aus Sting ("N/A") und doppelte Daten in den gleichen Spalten haben, wird der benutzerdefinierte Sortieralgorithmus entfernt. Jetzt werden die Spalten mit nur Stringdaten noch sortiert, weil mit jtable von defaultsorting, aber Spalten mit gemischten Daten gibt Classcast. gibt es ich die benutzerdefinierte Sortierung halten könnte oder erneut anwenden es, sobald tableStructureChange Ereignis.Beibehalten der benutzerdefinierten Sortierung in JTabelle nach Tabellenstruktur wird geändert
Antwort
public void sortTable(){
TableRowSorter<TableModel> sort = new TableRowSorter<TableModel>(Jtable.getModel());
Jtable.setRowSorter(sort);
List<RowSorter.SortKey> sortKeys = new ArrayList<>();
sortKeys.add(new RowSorter.SortKey(4, SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
}
tritt dies ist, wie Sie tatsächlich eine JTable sortieren soll. Versuchen Sie mit diesem Code und post, wenn es Ausnahmen gibt
Die Frage ist, warum das tableStructureChanged
Ereignis generiert wird Dies bedeutet, dass die Spaltenstruktur der Tabelle geändert hat, so h Woher weißt du, dass die gleichen Spalten existieren werden?
Wenn Sie eine Aktualisierung der Tabelle durchführen, dann erstellen Sie einen ganz neuen TableMode. Stattdessen können Sie alle Datenzeilen aus der Tabelle entfernen (dh setRowCount (0) im DefaultTableModel verwenden) und dann die neuen Datenzeilen einfügen. Auf diese Weise wird tableStructureEvent
nicht generiert.
Die andere Option besteht darin, die Sortierinformationen zu speichern und den Sortierer neu zu erstellen. Sie können die aktuellen Sortierschlüssel von DefaultRowSorter abrufen. So ist die grundlegende Logik wäre:
- getSortKeys()
- Refreshtablemodel
- erstellen Sie den Sortierer
- setSortKeys (...)
Check out: Trying to get the sorter positon to retain after a table refresh für ein Arbeitsbeispiel .
- 1. jTabelle und Sortierung
- 2. Sortierung wird nach Änderung der Datenquelle gelöscht
- 3. Wert wird nach Ende der Funktion geändert
- 4. Implementiere Suche textField in jTabelle
- 5. jRadioButton Wert in jTabelle
- 6. Größe der Textfläche wird beibehalten
- 7. Wie wird der Status nach einer Seitenaktualisierung in React.js beibehalten?
- 8. Wie wird nur der Datumsteil einer DateTime geändert, während der Zeitabschnitt beibehalten wird?
- 9. CSS div's Höhe beibehalten, wenn Inhalt dynamisch geändert wird
- 10. Sortierung Dropdown-Menüs, wenn geändert
- 11. Hintergrundfarbe für Option beibehalten, wenn Fokus geändert wird
- 12. Javascript Sortierung Sparse Array Indizes beibehalten
- 13. HTML - Eingabewert wird nach Aktualisierung beibehalten
- 14. Wie wird RMS nach der Installation einer neuen Version beibehalten?
- 15. Markierte Textfarbe nach der Bearbeitung beibehalten
- 16. jquery: Bildformat beibehalten, während ein Hintergrundbild in der Größe geändert wird
- 17. Wie wird der Imageview-Skalentyp beibehalten?
- 18. Wert wird nach dem Kommen geändert. | CallableStatements
- 19. Wie wird der Wert geändert, wenn die Option geändert wird?
- 20. Nach der Bildschirmdrehung wird die Sprache meiner Anwendung geändert
- 21. Warum wird nach dem Drehen der UIImageView Größe geändert?
- 22. Warum wird ein Zeigerwert nach der Rückgabe geändert?
- 23. jTabelle Rasterlinien für ausgewählte Zeilen
- 24. JQUERY DATATABLE Filterparameter nach der Aktualisierung beibehalten
- 25. Axis-Webdienst wird beibehalten
- 26. Sortierung Dateipfade in einer Liste der benutzerdefinierten Objekte
- 27. Wird Hyperdex noch beibehalten?
- 28. Java HashMap Sortierung mit benutzerdefinierten Lambda-Komparator
- 29. PHP Sortierung mehrdimensionalen Array mit benutzerdefinierten Reihenfolge
- 30. Bevorzugte Tabellenstruktur
Sortierung ist kein Problem für mich. Das Problem ist, sobald die tableStrucuture mit fireTableStructureChanged() -Methodenaufruf geändert wird, wird der ursprüngliche benutzerdefinierte Sortieralgorithmus entfernt, ich frage nach Möglichkeiten, das ursprüngliche Sortieralgo beizubehalten oder es automatisch wieder zu übernehmen, sobald die Struktur der Tabelle geändert wird. – Amit
setzen Sie den Code auf die Frage. – Priyamal