Como faço para expandir automaticamente um JTree ao definir um novo TreeModel?
Eu tenho um costumeJTree
e um costumeJModel
; Eu faria o JTree "auto-expandir" quando eu der um novo modelo. No momento, simplesmente colapsa todos os nós na raiz.
Aqui está um exemplo:
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));
Neste ponto, a árvore exibe corretamente:
- BOB
- ALICE
onde Alice é filha de Bob (tanto nos dados quanto na árvore visual)
No entanto, se eu ligar:
tree.setModel(new CustomTreeModel(model));
tudo está recolhido:
+ BOB
Existe uma maneira de "expandir automaticamente" tudo na árvore ao definir um novo modelo?