Probleme mit TreeItem

Madlip

Bekanntes Mitglied
Hey Community,

ich bin gerade etwas Ratlos. Ich versuch ein Tree dynamisch aufzubauen - soll heißen das ich in der Laufzeit eine Collection aufbaue und wenn ich ein Button drücke sollen die Elemente aus der Collection dem Tree hinzugefügt werden - es geht nicht ...

Dann hab ich mir Testweise einen einfachen Code geschrieben nur der Funktioniert noch nicht mal so wie er soll. Ich brauch euren Rat.

Das ist der Code:

Java:
public void createTree(){
		TreeViewer tree = new TreeViewer(this, SWT.BORDER);
		tree_1 = tree.getTree();
		tree_1.setHeaderVisible(true);
		GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1);
		gd_tree.widthHint = 440;
		tree_1.setLayoutData(gd_tree);
		
		TreeColumn trclmnFieldName = new TreeColumn(tree_1, SWT.NONE);
        trclmnFieldName.setWidth(430);
        trclmnFieldName.setText("Aufgaben");
        
		TreeItem test = new TreeItem(tree_1, SWT.NONE);
		test.setText("Kopf");
		TreeItem subTest = new TreeItem(test, SWT.NONE);
		subTest.setText("Jochen");
		
	}

MfG
Mad
 
Zeig mal deinen Content Provider bitte


Edit: Also bei deinem Code zeigt er gar nichts an. Bei mir wäre
Code:
this
eine Shell, ob das bei dir ne Composite ist weiß nicht, aber wenn es ne Shell ist, dann musst du der Shell ein GridLayout geben bspw um den TreeViewer überhaupt angezeigt zu bekommen.

Zu Deiner zur Laufzeit einfügen Thematik: Du musst
Code:
treeViewer.setInput(Dein Input);
aufrufen und übergibst damit dem Content Provider den neuen Input. Dieser feuert automatisch die methode
Code:
inputChanged()
. Näheres dazu gleich. Schau dir mal den
Code:
AbstractTreeContentProvider
an,
Code:
hasChildren()
prüft dann ob es SubItems gibt und
Code:
getChildren()
holt sich diese. Du siehst dort auch
Code:
inputChanged()
Diese ist jedoch noch nicht implementiert, weswegen du einen eigenen Content Provider schreibst, in dessen
Code:
inputChanged()
du festlegst, was zu tun ist (idR den neuen Input setzen). Daraufhin wird der Tree neu gebaut.

Achso, ich würde dir empfehlen deine Variablen sinnlicher zu formulieren, einen TreeViewer tree zu nennen kann für Außenstehende verwirrend sein, insbesondere wenn der Code umfangreicher wird. 😉
 
Zuletzt bearbeitet:
Hab gerade mit nem Kollegen geredet und sind genau zu dieser Schlussfolgerung gekommen 🙂

Das Problem ist halt das wenn man einen TreeViewer benutzt man die Methode
Java:
setInput();
benutzen muss.

Besten Dank.
 

Zurück
Oben