Hi zusammen
folgendes Problem:
Ich habe ein XML Dokument der wird in einem JTree angezeigt. Nun habe ich die Möglichkeit diesen Baum als Text, also in einer JTextArea, darzustellen. Hier kann ich Änderungen vornehmen und dann wieder zurück in Baumansichten switchen. Ich möchte nun, wenn ich vom TextModus wieder zurück in den BaumModus zurückspringe, dass der alte geöffnete Knoten wieder offen ist.
Dazu speichere ich mir den Knoten bevor ich in den TextModus wechsle als TreePath. Da ich aber ein neues Document-Objekt laden muss (es könnte ja jemand im TextModus Werte ändern), kann ich den mir zuvor gemerkten TreePath nicht mehr anwenden. Dann spuckt er mir einen Fehler mit "DOM005 Wrong document" oder so ähnlich.
Kein Problem dachte ich mir und habe mir die Knotennamen aus dem TreePath genommen und mir mein eigenes, neues Treepath gebastelt.
Verzeiht mir die Namensgebung der Variablen.
tempPath ist der vorher gemerkte TreePath.
Trotzdem öffnet er mir den Baum nicht. Ganz am Ende steht in fff dann auch ein Wert wie [[Knoten1],[Knoten2],[Knoten3]]. Also so wie es sein sollte.
Bin für jeden Tipp dankbar.
Grüße
sylo
folgendes Problem:
Ich habe ein XML Dokument der wird in einem JTree angezeigt. Nun habe ich die Möglichkeit diesen Baum als Text, also in einer JTextArea, darzustellen. Hier kann ich Änderungen vornehmen und dann wieder zurück in Baumansichten switchen. Ich möchte nun, wenn ich vom TextModus wieder zurück in den BaumModus zurückspringe, dass der alte geöffnete Knoten wieder offen ist.
Dazu speichere ich mir den Knoten bevor ich in den TextModus wechsle als TreePath. Da ich aber ein neues Document-Objekt laden muss (es könnte ja jemand im TextModus Werte ändern), kann ich den mir zuvor gemerkten TreePath nicht mehr anwenden. Dann spuckt er mir einen Fehler mit "DOM005 Wrong document" oder so ähnlich.
Kein Problem dachte ich mir und habe mir die Knotennamen aus dem TreePath genommen und mir mein eigenes, neues Treepath gebastelt.
Java:
int tempCount = tempPath.getPathCount();
Node node = (Node)tempPath.getLastPathComponent();
ArrayList<Node> nl = new ArrayList<Node>();
nl.add(node);
for (int i=0; i < tempCount-1; i++){
node = node.getParentNode();
nl.add(node);
}
Collections.reverse(nl);
Node[] ggg = new Node[nl.size()];
for (int i = 0; i < nl.size(); i++){
ggg[i] = nl.get(i);
}
TreePath fff = new TreePath(ggg);
jTreeTable.getTree().expandPath(fff);
tempPath ist der vorher gemerkte TreePath.
Trotzdem öffnet er mir den Baum nicht. Ganz am Ende steht in fff dann auch ein Wert wie [[Knoten1],[Knoten2],[Knoten3]]. Also so wie es sein sollte.
Bin für jeden Tipp dankbar.
Grüße
sylo