Jak automatycznie rozszerzyć JTree podczas ustawiania nowego drzewa TreeModel?

Mam zwyczajJTree i zwyczajJModel; Chciałbym, aby JTree „automatycznie rozwijało się”, gdy nadam mu nowy model. W tej chwili po prostu zwija wszystkie węzły do ​​katalogu głównego.

Oto przykład:

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));

W tym momencie drzewo poprawnie wyświetla:

- BOB
  - ALICE

gdzie Alice jest dzieckiem Boba (zarówno w danych, jak iw drzewie wizualnym)

Jeśli jednak zadzwonię:

tree.setModel(new CustomTreeModel(model));

wszystko jest zawalone:

+ BOB

Czy istnieje sposób „automatycznego rozszerzenia” wszystkiego w drzewie podczas ustawiania nowego modelu?

questionAnswers(6)

yourAnswerToTheQuestion