Le JTree

Définir les noeuds :

  • TreeNode (interface),
  • DefaultMutableTreeNode (implémente MutableTreeNode).

Le renderer par défaut affiche les objets contenus dans les noeuds via la méthode toString().

Les modèles :

  • DefaultTreeModel Quelques outils :
  • Afficher les lignes entre les noeuds parents et les noeuds enfants :arbre.putclientProperty("JTree.lineStyle", "Angled"); (dépend du Look & Feel).
  • setShowRootHandles : Affiche la poignée au neoud root
  • setRootVisible : cache le noeud root (affichage d’une forêt)
  • isLeaf : ce noeud est une feuille
  • setAllowchildren : Ce noeud ne doit contenir aucune feuille.
  • setAskAllowChildren : Permet de définir si on doit invoquer setAllowChildren pour savoir si le noeud est une feuille (au lieu de isLeaf)

Gestion du chemin :

  • getSelectionPath : Renvoie un TreePath
  • treePath.getLastPathComponent : Dernier objet de la hiérarchie. (ou encore tree.getLastPathComponent)
  • Attention : getSelectionPaths() renvoie la sélection courante alors quegetPaths() renvoie les modifications de sélections.

A ne pas faire :

  • selection.add(newNode) : Ne met pas à jour l’affichage.

Préférer ces appels :

model.insertNodeInto(newNode, selection, selection.getChildCount());
model.removeNodeFromPArent(selection); 
model.nodeChanged(selection);

reload() permet de recharger le modèle en entier. Tous les noeuds redeviennent fermés.

Pour rendre un noeud visible :

nodes = model.getPathToRoot(selection); 
path = new TreePath(nodes); 
tree.makevisible(path);

Enfin, tree.scrollPathToVisible(path); permet de positionner l’arbre correctement dans le scrollPane pour que l’élément cherché soit centré. A appeler à la place de makeVisible.

Rechercher des noeuds :

  • Parcours horizontal : breadthFirstEnumeration (recommandé dans la plupart des cas)
  • Parcours vertical : depthFirstEnumeration

Affichage :

  • Le rendu dépend majoritairement du Look & Feel utilisé.
  • Possibilité de modifier les icônes via renderer.setLeafIcon,renderer.setClosedIcon, ou encore renderer.setOpenIcon

Utilisation des écouteurs :

  • TreeSelectionListener
  • Choix d’un modèle de sélection : TreeSelectionModel.SINGLE / TreeSelectionModel.CONTIGUOUS, TreeSelectionModel.DISCONTIGUOUS

La méthode setEditable appelle le DefaultCellEditor.

Utilisation de modèles personnalisés :

  • implémenter TreeModel
  • gestion d’Ecouteurs TreeModelListener
treeNodeChanged 
treeNodeInserted 
treeNodeRemoved 
treeStructureChanged
  • valueForPathChanged(TreePath, Object)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *