TreeNode farbig markieren

delphiking1980

Bekanntes Mitglied
Hallo,

ich suche in einem Baum einen Knoten dieser soll dann Farbig markiert werden.
Den Knoten finde ich mit folgender Methode :

Java:
private void selectNode(String nodeName)
	{
		DefaultMutableTreeNode root = (DefaultMutableTreeNode)tree.getModel().getRoot();
		for (int i = 0; i < root.getChildCount(); ++i) {
			DefaultMutableTreeNode child =(DefaultMutableTreeNode) root.getChildAt(i);
			if (child.toString().startsWith(nodeName)) {
				System.out.println(child.toString());
			}
		}
	}

Testweise habe ich das DefaultMutableTreeNode Objekt verwendet aber das bietet mir auch nicht die Funktion setFont().

Kennt jemand die Antwort ?
 
Eine Möglichkeit wäre ein eigener TreeCellRenderer, der selektierte Nodes in einer bestimmten Farbe rendert.

Beispiel:

Java:
public class MyTreeCellRenderer extends DefaultTreeCellRenderer
{
	@Override
	public Color getTextSelectionColor() 
	{
		return Color.GREEN;
	}
}

den Renderer dann an den tree zuweisen
Java:
tree.setCellRenderer(new MyTreeCellRenderer());


Dann musst du nur noch deine Node selektieren und sie wird in der Farbe (hier Grün) dargestellt
Java:
tree.setSelectionPath(new TreePath(node.getPath()));


Das blöde an der Methode ist nur, dass man dazu die Node(s) selektieren muss. Wie man einfach so wahlfrei eine Node anders farbig darstellen kann weis ich leider nicht.
 
Mmh,

aber irgendwie ist da der Wurm drin, wenn ich mit der Methode

Java:
private void selectNode(String nodeName) {
		DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();

		for (int i = 0; i < root.getChildCount(); ++i) {
			final DefaultMutableTreeNode child = (DefaultMutableTreeNode) root.getChildAt(i);

			if (child.toString().startsWith(nodeName)) {
				tree.setSelectionPath(new TreePath(child.getPath()));
				System.out.println(child.toString());
			}
		}
	}

suche dann findet der nicht die Unterknoten.
 

Zurück
Oben