Bonjour,
j'ai un composant JTree et je souhaite que par défaut, le noeud racine soit ouvert mais je n'y parviens pas.
J'ai recherché dans le forum et j'ai trouvé pas mal de choses comme l'utilisation de l'objet TreePath et de la méthode expandPath() mais malgré cela, pas moyen...
Voici le code de mon JTree :
et celui de mon renderer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Quartis Optima"); TreePath tp = new TreePath(racine.getPath()); DefaultTreeModel arbreModele = new DefaultTreeModel(racine); monArbre = new JTree(arbreModele); monArbre.setCellRenderer(new SiteMapTreeCellRenderer()); monArbre.expandPath(tp); if (moduleList!=null) { for (Module module:moduleList) { DefaultMutableTreeNode moduleNode = new DefaultMutableTreeNode(module); List<Page> modulePageList = module.listPages(); for (Page page:modulePageList) { DefaultMutableTreeNode pageNode = new DefaultMutableTreeNode(page); moduleNode.add(pageNode); } racine.add(moduleNode); } }
Si quelqu'un peut m'éclairer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class SiteMapTreeCellRenderer extends DefaultTreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; if (node.getUserObject() instanceof Module) { Module m = (Module)node.getUserObject(); setIcon(m.getIcon()); setText(m.getName()); } else if (node.getUserObject() instanceof Page) { Page p = (Page)node.getUserObject(); setIcon(ImageUtils.createImageIcon(p.getIcon(), "")); setText(p.getName()); } return this; } }
Merci d'avance![]()
Partager