Bonjour,
Je souhaite afficher un JTree, le probléme c'est que je veux pas afficher des label sur ce JTree, mais des images. Pour le moment je ne trouve pas comment faire...Merci à l'avance.
Version imprimable
Bonjour,
Je souhaite afficher un JTree, le probléme c'est que je veux pas afficher des label sur ce JTree, mais des images. Pour le moment je ne trouve pas comment faire...Merci à l'avance.
Bonjour,
A priori je dirais qu'il te faut travailler sur TreeCellRenderer pour remplir chaque noeud avec une image à la place du texte.
Cdlt
Merci pour ta réponse ,c'est exactement ça qu'il faut utiliser. et j'ai reussi a le faire, le probleme c'est que je veux donner à mes images une taille spécifique, est il possible de resizer les images avant de les afficher??
La fonction recherche existe... Notamment dans la FAQ de developpez.com ...
Allez, je suis gentil, j'affine la recherche : section GUI.
Merci pour ta réponse, mais j'ai encore un petit probléme (Désolé ,j'en ai trop). C'est que l'image que je veuw dimensionner est une ImageIcon, je ne paux malheuresement pas utilisé Image sur mon projet..Alors??
ImageIcon.getImage();
Merci dingoth, ça marche nikel, sauf que si je veux afficher mes miniatures , il faut que je les resize au minimum possible pour qu'elle tiennent sur une seule ligne. est-il possible d'espacer les lignes d'un Tree de façon à pouvoir agrandir un peu mes miniatures??
tu as la méthode setRowHeight sur un JTree qui pourrait t'aider à faire ca
Merci , c'est exactement ce qu'il me fallait. C'est résolu, et à bientot.
Désolé mais derniere question pour aujourd'hui:lol:, maintenant j'arrive à afficher mon image sur les noeud de mon Tree, sauf que j'utilise toujours la meme image, celle que prend mon rendrer avec :
Je veux a present utiliser d'autres images pour chaque noeud , est ce possible svp??Code:
1
2
3
4
5
6
7
8
9
10
11 JTree tree3 = new JTree(root); tree3.expandRow(3); // Expand children to illustrate leaf icons tree3.setRowHeight(55); DefaultTreeCellRenderer renderer3 = new DefaultTreeCellRenderer(); renderer3.setOpenIcon(icone); renderer3.setClosedIcon(icone); renderer3.setLeafIcon(icone); tree3.setCellRenderer(renderer3);
Merci encore, vous m'avez beaucoup aider.
ReRebonjour,
logiquement pour pouvoir modifier chaque noeud, il te faut tout d'abord y accéder.
Du coup il te faudrait peut être surcharger la méthode permettant de créer le rendu de chaque noeud, c'est à dire getTreeCellRendererComponent() si je ne me trompe pas.
cdlt
Désolé mais j'ai pas bien saisie comment utiliser la fonction getTreeCellRendererComponent(). Je dois l'utiliser à quel niveau pour inserer mes images??
Re,
tout d'abord je voudrais clarifier quelque chose car tu parles de deux choses différetes ici. Tu veux mettre des icones à la place des icones existantes par défaut ou mettre des icones à la place du texte qui existe normalement sur un noeud?
Pour getTreeCellRendererComponent, il te faut faire une classe qui étend DefaultTreeCellRenderer et jouer sur le composant que cette méthode renvoie (qui correpond au component représentant un noeud).
Cdlt
Re,
En fait, pour le moment, mon image, j'arrive à l'afficher puisque c'est elle que je passe à mon Renderer.Aprés je passe ce renderer à mon JTree, du coup cette image est affiché partout. Ce que je veux maintenant, c'est prendre chaque noeud de mon JTree et y inserer une image differentes des autres....Alors comment penses tu qu'il faut faire??
Voici mon code complet:
Merci encore.Code:
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
27
28
29
30
31
32
33
34
35 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); DefaultMutableTreeNode child; DefaultMutableTreeNode grandChild; for(int childIndex=1; childIndex<4; childIndex++) { child = new DefaultMutableTreeNode("Child " + childIndex); root.add(child); for(int grandChildIndex=1; grandChildIndex<4; grandChildIndex++) { grandChild = new DefaultMutableTreeNode("Grandchild " + childIndex + "." + grandChildIndex); child.add(grandChild); } } /** Accès au toolkit : */ java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); Image image = toolkit.getImage("C:/Workspace/CustomisationExample/src/images/1.JPG"); Image myNewImage = image.getScaledInstance(50, 50, Image.SCALE_DEFAULT); Icon icone = new ImageIcon(myNewImage); JTree tree3 = new JTree(root); tree3.expandRow(3); tree3.setRowHeight(55); DefaultTreeCellRenderer renderer3 = new DefaultTreeCellRenderer(); renderer3.setOpenIcon(icone); renderer3.setClosedIcon(icone); renderer3.setLeafIcon(icone); tree3.setCellRenderer(renderer3);
re,
Tout d'abord il te faudrait revisiter la doc car il y a quelques éléments de réponse.
Il me semble que tu te mélanges un peu entre données réelles et éléments affichées. Normalement il te faudrait faire un model qui va contenir tes données réelles (tes defaultMutableTreeNode) et ensuite créer ton Tree (le composant affiché) qui se base sur le modèle pour créer des components (grâce à la méthode getTreeCellRendererComponent du renderer) et les afficher à l'écran.
Vu que tu veux toucher à la façon dont chaque noeud est crée en remplacant les labels par des images, il te faut modifier la façon dont le renderer affiche les noeuds.
Va à cette partie, ca va t'aider surement :lien au chapitre Customizing a Tree's Display.
Cdlt
Re,
Merci pour ta reponse. Je vais essayer de chercher sur ce point. Je vous tiendrais au courant si je trouve la solution.