Java - AWT/Swing

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);

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007