J'essaye de réaliser une structure arborescente JTree dont les 'UserObject's des 'DefaultMutableTreeNode's des 'leaf node's sont des 'JPanel's plutôt que des String (càd pas d'appel de 'toString( )').
Ne s'agit-il pas d'une fonctionnalité intéressante ?
Si c'est faisable, quelles sont les lignes directrices à suivre ?

Dois-je implémenter l'interface 'TreeNode' dans ma propre pour pouvoir manipuler de 'JPanel's ou bien le 'UserObject' de 'DefaultMutableTreeNode' peut-il être un JPanel. Comment alors afficher ce objet de classe JPanel, en remplacement de 'toString()' (pour 'JLabel') ?

Je n'ai pas besoin des nombreuses méthodes qui traitent la mutation de noeuds, dans (Default)MutableTreeNode. Néanmoins, implémenter une interface implique de devoir programmer toutes les fonctions prévues par cette interface, même celles dont je n'ai pas besoin, sinon je dois rendre ma classe 'abstract' et la compléter dans une classe descendante ultérieure ... trop de boulot et de risque d'erreur.

Quelqu'un connaît-il un code source assez semblable qui fonctionne bien ou un tutoriel 'avancé' qui pourrait m'inspirer ?

Dans mon application, le branchage est à 3 à 5 niveaux, le dernier de ces niveaux étant constitué d'un JPanel (feuilles) comportant ...
- une case d'affichage d'une valeur numérique (provenant de mon Array d'Object[] de valeurs initiales) modifiable,
- un bouton de "remise à la valeur initiale",
- un libellé (JText) (provenant de mon Array d'Object[] de valeurs initiales),
- une Array de int multidimensionnelle contenant la localisation dans mon Array d'Object[] de la cellule que je remplis d'indices, et le libellé initiaux à afficher dans ce JPanel
L'arborescence complète de référence est déterminée dans une Array d'Object[] multidimensionnelle instanciée au sein même de la classe et comporte notamment la valeur numérique et le libellé initiaux de chaque 'leaf node'. Cette arborescence sert de modèle pour la construction de l'arborescende de '(DefaultMutable)TreeNode's.

Dans mon Array d'Object[] de valeurs initiales, toutes les 'branch nodes' sont des Object[] et toutes 'leaf nodes' sont donc des objets de ma classe 'Feuille_ParamDroite', héritant de 'JPanel'.
Par ailleur, le bon usage avec JTree veut que soit déclaré un objet de la classe 'TreeCellRenderer' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
TreeCellRenderer monRendu = new MonRendu_Feuille();
arbre.setCellRenderer(monRendu); // myRenderer
que l'arbre utilisera automatiquement pour tous les noeuds de type 'Feuille_ParamDroite' dans le 'TreeModel'.