У меня есть пользовательский JTree
и пользовательский JModel
; Я бы хотел, чтобы JTree "автоматически расширялся", когда я даю ему новую модель. На данный момент он просто сворачивает все узлы в корневой каталог.
Вот пример:
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));
В этот момент дерево правильно отображает:
- BOB
- ALICE
где Алиса является дочерним элементом Боба (как в данных, так и в визуальном дереве)
Однако, если я звоню:
tree.setModel(new CustomTreeModel(model));
все свернуто:
+ BOB
Есть ли способ "автоматически развернуть" все в дереве при настройке новой модели?