A
Anon
Gast
Hi,
nachdem ich nun zahlreiche Beispiele angeschaut habe, frage ich hier.
In den Beispielen wird zwar immer eine funktionierende Möglichkeit angeboten die Tabelle zu sorteieren, nur bin ich damit nicht wirklich zufrieden.
Hier ist eins der typischen Beispiele: Sort a SWT table by column : TableSWT JFace EclipseJava
Das Vorgehen sieht dabei so aus, dass die Zeilen gesondert sortiert werden, der Inhalt in neue Items kopiert wird und sie danach von neuem in die Tabelle eingefügt werden. Mal abgesehen davon, dass solch eine Lösung höchst merkwürdig aussieht, gibts auch Probleme, wenn andere Objekte referenzen der Items benutzen um den Zeileninhalt zu ändern...
Ich wollte das ganze also besser lösen, klappt aber nicht:
Das Ergebnis sieht nun so aus, dass die Zeilen zwar sortiert sind (Debugger)...aber die Tabelle nicht aktualisiert wird.
Kennt hier also jemand eine Möglichkeit, eine SWT-Tabelle zu sortieren ohne sie ständig neu zu befüllen?
mfg
nachdem ich nun zahlreiche Beispiele angeschaut habe, frage ich hier.
In den Beispielen wird zwar immer eine funktionierende Möglichkeit angeboten die Tabelle zu sorteieren, nur bin ich damit nicht wirklich zufrieden.
Hier ist eins der typischen Beispiele: Sort a SWT table by column : TableSWT JFace EclipseJava
Das Vorgehen sieht dabei so aus, dass die Zeilen gesondert sortiert werden, der Inhalt in neue Items kopiert wird und sie danach von neuem in die Tabelle eingefügt werden. Mal abgesehen davon, dass solch eine Lösung höchst merkwürdig aussieht, gibts auch Probleme, wenn andere Objekte referenzen der Items benutzen um den Zeileninhalt zu ändern...
Ich wollte das ganze also besser lösen, klappt aber nicht:
Java:
new Listener() {
@Override
public void handleEvent(Event e) {
TableColumn currentColumn = (TableColumn)e.widget;
if (table.getSortColumn() == currentColumn)
table.setSortDirection(table.getSortDirection() == SWT.UP ? SWT.DOWN : SWT.UP);
else {
table.setSortColumn(currentColumn);
table.setSortDirection(SWT.UP);
}
final int index = table.indexOf(currentColumn);
final int direction = table.getSortDirection();
Arrays.sort(table.getItems(), new Comparator<TableItem>() {
@Override
public int compare(TableItem ti1, TableItem ti2) {
int result = ti1.getText(index).compareTo(ti2.getText(index));
return direction == SWT.UP ? result : result * -1;
}
});
// refresh??
}
};
Das Ergebnis sieht nun so aus, dass die Zeilen zwar sortiert sind (Debugger)...aber die Tabelle nicht aktualisiert wird.
Kennt hier also jemand eine Möglichkeit, eine SWT-Tabelle zu sortieren ohne sie ständig neu zu befüllen?
mfg