Bonjour est il possible d'avoir un JTree tout le temps déployé, sans que l'utilisateur puisse plier ou déplier les nœuds ?
Merci d'avance, Aurélien.
Version imprimable
Bonjour est il possible d'avoir un JTree tout le temps déployé, sans que l'utilisateur puisse plier ou déplier les nœuds ?
Merci d'avance, Aurélien.
SAlut,
Il te faut ajouter un écouteur sur ton arbre :
Avec ça tu empèches d'enrouler les noeuds.Code:
1
2
3
4
5
6
7
8
9
10
11
12 ihmArbre.addTreeWillExpandListener(new TreeWillExpandListener() { @Override public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException { } @Override public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException { // On n'enroule pas le contenu du neoud quand on double-clique dessus throw new ExpandVetoException(event); } });
Tu peux empècher de dérouler en jetant une exception dans le treeWillExpand.
Pour qu'il soir tout le temps déroulé, je te propose d'ajouter ce bout de code dans ton modèle, une fois que tu as géré ta map d'objets :
Attention, ne pas faire de fireTableStructureChanged après, mais plutôt avant. Sinon ton arbre va se recroqueviller.Code:
1
2
3
4
5
6
7
8
9
10
11 ... expandRecursive(new TreePath(getRoot())); ... private void expandRecursive(TreePath path) { source.expandPath(path); for (int i=0; i< source.getModel().getChildCount(path.getLastPathComponent()); i++) expandRecursive(new TreePath(path.getPath()).pathByAddingChild(source.getModel().getChild(path.getLastPathComponent(), i))); }