Как автоматически развернуть JTree при установке новой модели TreeModel?
У меня есть обычай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
Есть ли способ «автоматического расширения» всего в дереве при установке новой модели?