Ich habe eine benutzerdefinierte JTree
und eine benutzerdefinierte JModel
; Ich würde für den JTree "automatisch erweitern", wenn ich ihm ein neues Modell gebe. Im Moment kollabieren einfach alle Knoten mit der Wurzel.Wie erweitere ich automatisch einen JTree, wenn ich ein neues TreeModel einstelle?
Hier ein Beispiel:
private class CustomTree extends JTree {
@Override
public boolean isExpanded(TreePath path) {
return ((Person) path.getLastPathComponent).hasChildren();
}
private class CustomTreeModel extends TreeModel {
// ... omitting various implementation details
@Override
public boolean isLeaf(Object object) {
return !((Person) object).hasChildren();
}
}
Model model = new Model();
Person bob = new Person();
Person alice = new Person();
bob.addChild(alice);
model.setRoot(bob);
JTree tree = new CustomTree(new CustomTreeModel(model));
An diesem Punkt zeigt der Baum richtig:
- BOB
- ALICE
wo Alice ein Kind von Bob ist (sowohl in den Daten und in der visuellen Struktur)
Allerdings, wenn ich rufe:
tree.setModel(new CustomTreeModel(model));
alles ist zusammengebrochen:
+ BOB
Gibt es eine Möglichkeit, „Auto-expand“ alles in dem Baum, wenn ein neues Modell?
keine Ideen aus diesem Code und Beschreibung sind alle Anmeldern & Zuhörer gehen weg nach Modell geändert wird, – mKorbel
@mKorbel Ich glaube, unter meine Antwort meine löst Problem. – sdasdadas
:-) ............... benutze nicht index von int, du kannst diesen index verlieren, musst alle accessible über node inc speichern. Objektwert (meine Ansicht) – mKorbel