Hallo,
ich möchte, dass die Spalten einer JTable sortierbar sind, wenn auf den Tabellenkopf der jeweiligen Spalte geklickt wird. Hierzu habe ich einen RowSorter hinzugefügt.
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>( tableModel );
table.setRowSorter( sorter );
das funktioniert soweit auch ganz gut. Nachteilig ist, dass ich die Tabellendaten und somit die Zeilenanzahl vorher nicht kenne. In meiner Anwendung sieht der Nutzer zunächst eine leere Tabelle mit 20 Zeilen (20 ist fiktiv gewählt), die er mit Werten füllen kann. Ist der Anwender in der letzten Zeile angekommen, so hänge ich einfach eine weitere Zeile an, sodass endlos Daten in die Tabelle geschrieben werden können.
Wenn nun die Spalte sortiert wird, dann werden die leeren Zellen jedoch berücksichtigt und mitsortiert. Hat der Nutzer nur bspw. 5 Einträge in der Tabelle gemacht, so sieht er einmal 15 leere Zellen, bevor er seine Eingaben sieht - das erscheint mir nicht sonderlich nutzerfreundlich. Über die Comparator-Schnittstelle, welche ich an den Sorter anhängen kann:
sorter.setComparator( i, new AbsoluteValueComparator());
werden die null
-Elemente leider nicht übergeben, sodass sie dort nicht (wie gewünscht) berücksichtigt werden können (so fern ich nichts übersehen habe).
Ich habe die Frage bereits im java-forum gestellt und auch eine Lösung bekommen. Diese baut aber darauf auf, dass ich Pseudowerte in die Tabelle setze, die immer ans Ende sortiert werden. Gibt es ggf. noch eine bessere Lösung, die allg. gültig ist?
Mit freundlichem Gruß
Micha