PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java/SWT Tree



dimevit
03-05-2007, 16:37
Hallo zusammen,

ich hab eine Fragen bzw. Tree in Java. Ich will ein Tree bauen, indem man nur die Blätter einchecken kann und die Parent sind nicht eincheckbar. Kann mir jemand sagen wie das geht

Vielen Dank,
dime

nul
04-05-2007, 09:37
Versteh ich dich richtig, du willst einen Baum, bei dem man nur in den unteren Knoten noch weitere Knoten hinzufuegen kann?

(Irgendwie wird das dann kein Baum, du hast nen Knoten, fuegst einen Knoten hinzu, jetzt kannst du nur im letzten Knoten einen Knoten hinzufuegen, das waere ja eine Liste)

Wenn hingegen ein Knoten mehrere Unterknoten haben kann, dann
a) begrenze die Anzahl der moeglichen Unterknoten oder
b) setze ein Flag, wenn keine weiteren Unterknoten mehr moeglich sind.

Am besten du siehst dir mal ein Beispiel fuer einen Baum an:
http://de.wikipedia.org/wiki/Bin%C3%A4rbaum

mfg

Liberty
04-05-2007, 16:47
Moin,

also irgendwie komme ich da auch nicht ganz mit: Was genau meinst Du mit Parent und Blatt? Die Unterscheidung gibt's eigentlich nicht, normalerweise kann aus jedem Blatt (Endpunkt) automatisch ein Parent werden, wenn Du weitere Elemente anhängst...

Was soll denn der Baum genau verwalten? Vielleicht wird's dann klarer...

So long,
Liberty

mehlvogel
04-05-2007, 16:48
Und was meinst du überhaupt mit "einchecken"?

Liberty
04-05-2007, 17:26
Und was meinst du überhaupt mit "einchecken"?

Ich tippe mal auf einchecken = einhängen. Und vielleicht meint er mit dieser Blatt/Parent-Geschichte, dass nur einzelne Knoten eingehängt/eingefügt werden können und keine ganzen Unterbäume (ich vermute mal, dass sich "subtree" so übersetzt).

So long,
Liberty

Igeloeffnung
04-05-2007, 17:48
Hi dimevit,

es gibt verschiedene Bäume, deshalb ist es auch vielleicht etwas schwer dir zu helfen.
Der wohl bekannteste Baum, ist der Binärbaum. Das Problem bei dem Binärbaum ist, dass er aber ausarten kann (d.h. du hast dann eigentlich keinen Baum mehr sondern eine Liste, oder z.B. der rechte Teilbaum ist viel länger ist als der linke, der rechte besitzt also mehr Elemente bzw. Knoten).
Dann gibt es Bäume die sich selbst ausgleichen, wenn man Elemente hinzufügt (das muss man natürlich selbst programmieren). Das Selbstausgleichen geschieht dann durch Rotation. Bäume die das können sind AVL-Bäume und Red / Black Bäume und B-Bäume.


Hier mal ein paar Links zur erklärung:
Binärbäume: http://de.wikipedia.org/wiki/Bin%C3%A4rbaum
AVL - Baum: http://de.wikipedia.org/wiki/AVL-Baum
Red/Black Bäume: http://de.wikipedia.org/wiki/Rot-Schwarz-Baum
B-Baum: http://de.wikipedia.org/wiki/B-Baum


vielleicht hilft dir das etwas weiter.

dimevit
05-05-2007, 14:27
Hallo zusammen,

sorry dass ich mich net so klar ausgedruckt habe.
Hier ein beispiel:



Tree tree = new Tree(shell, SWT.CHECK | SWT.BORDER);

TreeItem treeItem0 = new TreeItem(tree, 0);
treeItem0.setText("Parent");

TreeItem treeItem1 = new TreeItem(treeItem0, 0);
treeItem1.setText("Item 1");

TreeItem treeItem2 = new TreeItem(treeItem0, 0);
treeItem2.setText("Item 2");

TreeItem treeItem1 = new TreeItem(treeItem0, 0);
treeItem3.setText("Item 3");


Wenn ich so ein Tree definiere, dann haben alle Tree Elements ein Checkbox
links stehen. Und ich will nur ,dass die Untere TreeItems in dem Fall Item 1,2 und 3 ein Checkbox haben, und dass bei Parent kein Checkbox steht.

Kann mir da jemand helfen,
Vielen Dank

mwanaheri
07-05-2007, 13:32
Ich kenne mich mit SWT leider gar nicht aus, aber eigentlich sollte es reichen, dem 'Parent'-Element einen anderen Style zuzuweisen. Über die Definition der Stile habe ich in der SWT-Doku auf die schnelle nichts gefunden, was m.E. gegen die doku spricht.