TableViewer dynamisch anpassen

garcuen

Grünschnabel
Hallo,

Ich habe 2 (jFace)TableViewer auf einem Schirm. Der Linke lädt Daten aus einer DB und der Rechte soll nach Klicken auf einer Zeile aus dem linken TableViewer(DB) unterschiedliche Objekte anzeigen. Der rechte TableViewer soll nun die Spalten dynamisch anpassen, da jede Zeile aus der linken Tabelle ein Objekt mit anderen Attributen aufruft, welches dann rechts angezeigt werden soll.

Benutze zur Entwicklung Eclipse+SWT-Designer.
Hoffe mir kann da jemand weiterhelfen, Danke.

VG,
Garcuen
 
Vielleicht mal etwas einfacher formuliert:

Ich möchte in einer Methode die Spalten dynamisch anpassen bzw. komplett austauschen. Anstatt der 2 bereits vorhanden Spalten sollen 4 komplett Unterschiedliche Spalten erscheinen. Zu einem späteren Zeitpunkt soll dann wieder zu den ursprünglichen 2 Spalten gewechselt werden. Ich bin soweit, dass ich unterschiedliche Spalten erstellen kann, aber die alten bleiben erhalten. Habe bereits alles doppelt gemoppelt versucht , aber ich bekomme alten Spalten nicht weg.

Hier werden die Spalten dynamisch erzeugt:
Code:
public void generateColumns(List<Object> result){
    	ArrayList<TableColumn> tableCol = new ArrayList<TableColumn>();
    	List row = (List)result.get(0);
    	List columnName = (List)row.get(row.size()-1);
    	List<Integer> maxWidth = getMaxWidth(result,columnName);    	
    	for(int i = 0; i < maxWidth.size(); i++){
    		tableCol.add(new TableColumn(table, SWT.NONE));
    		tableCol.get(i).setWidth(maxWidth.get(i).intValue()*8);
    		tableCol.get(i).setText(""+columnName.get(i));
    	}
    }


hier leere und fülle ich den TableViewer;
Code:
tableViewer.getTable().removeAll();
tableViewer.setInput(input);
tableViewer.refresh();

Meine Frage, wie kann ich bestehende Spalten aus dem TableViewer löschen!?
 
Ist zwar ein bißchen spät, aber hier kommt meine Lösung :)

Die Columns werden von rechts nach links geschlossen/gelöscht

Code:
for (int i = tableViewer.getTable().getColumnCount()-1; i >= 1; i--) {
	tableViewer.getTable().getColumn(i).dispose();
					
};
 
Zurück