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?