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?

questionAnswers(6)

yourAnswerToTheQuestion