# SWT-Table sortieren



## Ghost2008 (12. Dez 2008)

Tag zusammen,

gibt es eine elegante Art eine SWT Table sortieren zu lassen?

Grüßle

_Dieser Beitrag wurde von L-ectron-X am 16.12.2008 um 19:29 Ihr editiert.
-Aussagekräftigen Titel vergeben_


----------



## Guest (14. Dez 2008)

weiß keiner eine einfache Möglichkeit ???:L


----------



## SlaterB (14. Dez 2008)

ich weiß nix von SWT, kann aber innerhalbe von 5 sec bei google

http://www.tutorials.de/forum/swing-java2d-3d-swt-jface/251592-swt-table-sortieren.html
+
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/SortaSWTtablebycolumn.htm
finden, ist das nix?


----------



## Guest (15. Dez 2008)

Ja hab ich mir schon nahe gelegt. Wie findet man heraus welcher Column gedrückt wurde?


----------



## SlaterB (15. Dez 2008)

so wie es dort in den Beispielen steht?


```
// Add sort indicator and sort data when column selected
	Listener sortListener = new Listener() {
		public void handleEvent(Event e) {
			// determine new sort column and direction
			TableColumn sortColumn = table.getSortColumn();
			TableColumn currentColumn = (TableColumn) e.widget; // !
```


----------



## Guest (15. Dez 2008)

Dadurch findest du, aber nicht den index des column,da mit col.getText braucht man einen int welche column gedrückt wurde, um die richtige Splate zu sortieren. Darum habe ich gefragt ob es eine einfache/elegante Lösung schon vorhanden ist.


----------



## Guest (15. Dez 2008)

Also ich habe mich stark an das Beispiel gehalten

```
final TableItem [] items = table.getItems();
        Arrays.sort(items, new MyTableSorter(...));
```

Es werden die Items richtig sortiert(überprüft duch debuggen) aber nicht dargestellt.


----------



## Guest (15. Dez 2008)

Also ich hab das updaten mal so gemacht.

```
Arrays.sort(items, new MyTableSorter(...));
      table.setSortDirection(dir);
      update(items, mTable);
    }
  }


  private void update(TableItem[] items, Table table)
  {
    for (int i = 0; i < items.length; i++)
    {
      final TableItem item = new TableItem(table, SWT.NULL);
      for (int j = 0; j < table.getColumnCount(); j++)
      {
        item.setText(j, items[i].getText(j));
        item.setImage(j, items[i].getImage(j));
      }
      items[i].dispose();
    }
  }
```

Irgndwie finde ich das aber nicht elegant  :autsch: und wie es mit der Performance aussieht bei einer größeren Tabelle bleibt mal schauen...


----------



## Guest (16. Dez 2008)

aber wenn ich das so mache fehlen mit alle informationen zu dem item ahhhhhhhhhhhhhhhhhhhhh ich weiß nicht weiter  ???:L


----------



## Guest (16. Dez 2008)

also die update methode mit dem dispose ist quark aber ich versteh nicht, warum er nachdem Arrays.sort(items, new MyTableSorter(...));  die items richtig sortiert hat aber nicht anzeigt... :bahnhof:  ???:L


----------



## Guest (16. Dez 2008)

Ich möchte mein Problem nochmal besser darstellen.
Ich möchte meine Spalte sortieren, über die Zellen die in der Spalte sind...
Ich möchte/kann kein ViewSorter benutzen weil ich dort in der compare methode die Objekte bekomme die ich im TableViewer int setInput reinschmeiße... Diese Objekte können bei jedem TableViewer anders sein. Ich wollte einen Sort methode(Spalte) die für alle Tabellen gülitig ist, darum dachte ich ich geh über die TableItems und deren Inhalte und lass danach sortieren. Was auch wunderbar klappt, bis auf das anzeigen. Weiß jemand wie ich dieses Vorhaben umsetzen könnte???? Oder wie ich die neuen Items anzeigen kann??? 
Danke  :?:  :?:  :?:  :?:


----------



## SlaterB (16. Dez 2008)

wenn hier gar keiner antwortet hilft vielleicht doch noch mal ein ordentlicher neuer Thread,
auch mit einem besseren Namen als nur 'Table'

ich kann dazu nix weiter sagen, hatte nur eine google-Suche angestoßen


----------



## Guest (16. Dez 2008)

also gut neuer Thread mit mehr Code


----------

