Personnaliser les noeuds d'un JTree

cs_nounouX Messages postés 34 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 21 mars 2006 - 20 juil. 2005 à 12:27
ManTico Messages postés 11 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 21 juillet 2005 - 23 juil. 2005 à 14:41
Salut tous,
me revoila avec de nouveaux probleme avec les JTree :D
J'aimerai eprsonnaliser (encore comme dans messenger) la JTree, mais voila pour mettre des icones je n'ai trouvé que ça :

Icon folder = new ImageIcon("./Images/folder.png");
Icon folder2 = new ImageIcon("./Images/folder2.png");
Icon file = new ImageIcon("./Images/file.png");
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setOpenIcon(folder2);
renderer.setClosedIcon(folder);
renderer.setLeafIcon(file);

mais voila le probleme, ex: j'ai fait mon JTree comme dans messenger avec des "groupes" (amis, ...etc) mais si il n y a pas d amis connecté il n'y a rien dans le noeud amis, donc le noeud est une feuille ... et donc il prend l'icone associé a une feuille... donc ça va pas
autre exemple : il m'est impossible de faire comme messenger, de changer l'icone celon le status (en ligne/hors ligne) puisque avec cette methodes on met le meme icone a toutes les feuilles

Je voulais savoir si il etait possibled e personnaliser chaque noeud lors de sa creation,

merci

_____________________________________
Mais tu sais, je suis pauvre, et mes rêves sont mes seuls biens.
Sous tes pas j'ai déroulé mes rêves.
Marche doucement, parce que tu marches sur mes rêves.-William Butler Yeats-

3 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
20 juil. 2005 à 13:04
tu peux faire un treecellrenderer maison,

au lieu d'utiliser le defaut,

tu trouveras plein d'exemples ici.
0
cs_nounouX Messages postés 34 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 21 mars 2006
20 juil. 2005 à 21:50
ici ou ? sur le site ?
_____________________________________
Mais tu sais, je suis pauvre, et mes rêves sont mes seuls biens.
Sous tes pas j'ai déroulé mes rêves.
Marche doucement, parce que tu marches sur mes rêves.-William Butler Yeats-
0
ManTico Messages postés 11 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 21 juillet 2005 1
23 juil. 2005 à 14:41
si tu veux pas trop te faire chier tu peux faire ainsi :
tu creer une classe type :
public class MonNoeud extends DefaultMutableTreeNode
{
ImageIcon Icon;

public MonNoeud(String Texte, ImageIcon Icon)
{
super(Texte);

this.Icon = Icon;
}
}

et à ton arbre tu lui met un DefaultTreeCellRenderer sauce maison un peu porc comme ca :

MonArbre.setTreeCellRender(new DefaultTreeCellRenderer()
{
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);

if (value instanceof MonNoeud)
{
this.setIcon(((MonNoeud)value).Icon);
}

return this;
}

})

si tes icones sont assez grandre et s'afficher pas entièrement rajoute avant le : return this; ce code :

tree.setRowHeight(0);
0