Fenrizwolf
Grünschnabel
Hallo!
Ich stehe gerade vor einem ziemlichen Problem.
Ich schreibe an einem Programm zum editieren von XML Files, und darin verwende ich sowohl Standard JTrees als auch die Netbeans Outline Komponente (TreeTable). Jetzt muss ich die Darstellungen sozusagen "synchronisieren". dh wenn ich auf ein Element in der Outline Komponente klicke soll der entsprechende JTree zum ausgewählten Element scrollen und dieses anzeigen.
Und hierbei kommen die Probleme!
Im Tree verwende ich eigene TreeNodes die DefaultMutableTreeNode extenden und ein jDOM Element als UserObject beinhalten, im Outline verwende ich hingegen direkt die JDOM Elemente.
Wenn ich nun also in der Outline etwas selektiere muss ich ein passendes Element in dem Tree finden, hierzu habe ich sowohl HashCode als auch equals überschrieben, was auch einwandfrei funktioniert.
Jedoch passieren sehr seltsame Dinge, wenn ich in meiner Schleife nach dem richtigen Element suche und dieses auch finde und den entsprechenden Path mittels return zurückgeben lasse, läuft die Schleife danach einfach weiter
Und soweit ich das weiß darf das eigentlich garnicht sein!
deshalb wäre ich für jede Idee sehr dankbar!
Das Debugging hat folgendes ergeben:
=> nach dem Befehl return tmp.getPath(); springt er direkt zu getPathForElement(tmp, nodes, searchAtIndex + 1);
Warum er dies tut is mir jedoch nicht nachvollziehbar.
mfg Fenrizwolf
Ich stehe gerade vor einem ziemlichen Problem.
Ich schreibe an einem Programm zum editieren von XML Files, und darin verwende ich sowohl Standard JTrees als auch die Netbeans Outline Komponente (TreeTable). Jetzt muss ich die Darstellungen sozusagen "synchronisieren". dh wenn ich auf ein Element in der Outline Komponente klicke soll der entsprechende JTree zum ausgewählten Element scrollen und dieses anzeigen.
Und hierbei kommen die Probleme!
Im Tree verwende ich eigene TreeNodes die DefaultMutableTreeNode extenden und ein jDOM Element als UserObject beinhalten, im Outline verwende ich hingegen direkt die JDOM Elemente.
Wenn ich nun also in der Outline etwas selektiere muss ich ein passendes Element in dem Tree finden, hierzu habe ich sowohl HashCode als auch equals überschrieben, was auch einwandfrei funktioniert.
Jedoch passieren sehr seltsame Dinge, wenn ich in meiner Schleife nach dem richtigen Element suche und dieses auch finde und den entsprechenden Path mittels return zurückgeben lasse, läuft die Schleife danach einfach weiter
Und soweit ich das weiß darf das eigentlich garnicht sein!
deshalb wäre ich für jede Idee sehr dankbar!
Code:
private TreeNode[] getPathForElement(DefaultMutableTreeNode root, TreeNode[] nodes, int searchAtIndex) {
//Hier muss sichergestellt werden, das der richtige Node gefunden wird
DefaultMutableTreeNode tmp = null;
Enumeration children = root.children();
while (children.hasMoreElements()) {
tmp = (CustomMutableTreeNode) children.nextElement();
CustomMutableTreeNode node = (CustomMutableTreeNode) nodes[searchAtIndex];
System.out.println("NODES: tmp: " + tmp + " node: " + node);
if (tmp.equals(node)) {
System.out.println("EQU nodes.length: " + nodes.length + " index: " + searchAtIndex);
if (nodes.length - 1 > searchAtIndex) {
System.out.println("Get new Node at: " + (searchAtIndex + 1));
getPathForElement(tmp, nodes, searchAtIndex + 1);
} else {
System.out.println("ELSE>>> " + tmp.getPath());
return tmp.getPath();
}
}
}
return null;
}
Das Debugging hat folgendes ergeben:
=> nach dem Befehl return tmp.getPath(); springt er direkt zu getPathForElement(tmp, nodes, searchAtIndex + 1);
Warum er dies tut is mir jedoch nicht nachvollziehbar.
mfg Fenrizwolf