2 questions sur JTree

Résolu
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 25 mars 2006 à 20:01
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 26 mars 2006 à 14:23
Bonjour à tous !

J'ai 2 questions concernant JTree, à commencer par la plus importante :

- A chaque noeud de mon JTree, j'ai une icône, et le texte associé (si on compare avec le menu gauche de l'explorateur windows, mon icône c'est la petite croix qui déploie d'un seul clic un dossier). Est-il possible, et si oui comment, que mon programme ne fasse pas la même chose selon que je clique sur l'icône ou sur le texte ? (j'ai déjà essayé avec TreeSelectionListener, mais il ne fait pas la différence ....)

- Est-il possible de rendre un JTree totalement transparent, comme un JLabel par exemple ? Pour info, j'ai essayé avec la méthode setOpaque(false), mais ça ne marche que partiellement : le fond de mon JTree est bien transparent, mais le fond de chaque noeud reste opaque .... Mais s'il n'est pas possible de le rendre totalement transparent, est-il possible alors de changer la couleur de fond de chaque noeud, sachant que comme setOpaque, setBackground n'est que partiellement efficace ?

Merci par avance !

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 mars 2006 à 03:38
Salut,



pour rendre transarent les label qui sont dans ton jtree modifie le CellRenderer exemple :



public class NewTreeCellRenderer extends DefaultTreeCellRenderer implements

Serializable {



private static final long serialVersionUID = 4417111729090588861L;



public final 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);



setBackground(new Color(255, 255, 255, 100));

setBackgroundNonSelectionColor(getBackground());

setOpaque(false);

return this;

}



}





......



JTree tree = new JTree();

tree.setCellRenderer(new NewTreeCellRenderer());




WORA
3
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
26 mars 2006 à 13:02
Hello !!!
Trop bien, ça marche nickel !!!! Merci beaucoup !!

Une petite remarque cependant : pour que les labels du JTree soient transparents, il faut mettre :
setBackground(new Color(255, 255, 255, 0));
au lieu de :
setBackground(new Color(255, 255, 255, 100));

Sinon, le 'Serializable' est-il nécessaire ? j'ai essayé sans et ça marche aussi très bien ...

Enfin, si toi ou quelqu'un d'autre a une réponse à ma 1ère question, il est le bienvenu !

Encore merci !!
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 mars 2006 à 14:23
Salut,



je sais mais le setBackground(new Color(255, 255, 255, 100)); c-t pour une de mes appli j'ai oublié de changer :P



le serializavle n'est pas necessaire mais la aussi je m'en sert dans mon appli :P

WORA
0
Rejoignez-nous