RowSorter für JTable
javax.swing.table.TableRowSorter
JTable kann Zeilen sortieren. Dazu muss der eingebaute RowSorter aktiviert werden:
JTable table = new JTable(new MyTableModel()); table.setAutoCreateRowSorter(true);
Wichtig hierbei ist, dass der Index der sichtbaren Tabelle ins Model umgerechnet wird!
int row = table.getSelectedRow(); int modelRow = table.getRowSorter().convertRowIndexToView(row);
Möchte man, dass die Sortierung bereits beim Öffnen der Tabelle durchgeführt wird, so hilft dieser Sourcecode:
table.getRowSorter().toggleSortOrder(0); //Sortiert nach der ersten Spalte (Spalte 0)
Natürlich ist es auch möglich einen eigenen RowSorter zu verwenden.
Hier wird nach dem zweiten Buchstaben der Spalte 1 sortiert:
TableRowSorter<AddressTableModel> sorter = new TableRowSorter<>(); sorter.setModel(tm); sorter.setComparator(1, new Comparator<String>(){ @Override public int compare(String o1, String o2){ if (o1.charAt(1) == o2.charAt(1)) return 0; return o1.charAt(1) > o2.charAt(1) ? 1 : -1; } } }); table.setRowSorter(sorter);