JTree mit DefaultMutableTreeNodes + UserObject rekursive befüllen

jworuna

Grünschnabel
Hallo,

ich habe eine Klasse mit Name "Element"

Code:
private String elementName;
private String elementType;
private boolean elementStatus;
private ArrayList<Element> childElements;

neben Gettern und Settern werden die Methoden

Code:
public Element getElementAtIndex(int index);
public boolean hasChildElements();
public int getChildElementCount();

angeboten.

Nun möchte ich einen JTree daraus aufbauen. Dies Funktioniert auch recht gut, nur leider nicht für unbegrenzte tiefe
der Kind Elemente. Nun wollte ich eine Rekursive Methode schreiben, die für vorhandene Kind Element jeweils eine
DefaultMutableTreeNode zurückgibt. Irgendwie bekomme ich dieses aber nicht hin.

Wie stell ich mir das vor!

Code:
Element root = new Element("Root", "1");
Element node = new Element("A Node", "2");
Element subNode = new Element("A subNode", "3");
Element subSubNode = new Element("A subSubNode", "4");
subNode.setChildElement(subSubNode);
node.setChildElement(subNode);
root.setChildElement(node);
node = new Element("Another Node", "2");
root.setChildElement(node);

DefaultMutableTreeNode rootNode = getTreeFromElement(root);

Code:
-> "Root" //Wurzel
     | -> "A Node" //Knoten
            | -> "A subNode" //Knoten
                   | -> "A subSubNode" //Blatt
     | -> "Another Node" // Blatt

Wenn es Kind Elemente gibt dann ist es ein Knoten, wenn es keine Kind Element gibt dann wird es ein Blatt.

Wie gesagt einfache bäume kann ich ausgeben, benutze dafür aber keine rekursiven Funktion.
Wäre nett wenn mir jemand einen Hinweis oder ein bsp. geben könnte.

Hat sich erledigt, war doch einfacher als ich dachte.

Code:
	public DefaultMutableTreeNode getAllTreeNodes(Element currentElement)
	{
		if (currentElement != null)
		{
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(currentElement);
			if (!currentElement.hasChildElements())
			{
				return node;
			} 
			else
			{
				for (Element e : currentElement.getChildElements())
				{
					node.add(getAllTreeNodes(e));
				}
			}
			return node;
		}
		return null;
	}

mfg. jworuna
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück