Bonjour,
Dans un JTree, je souhaiterais mettre le texte d'un noeud en rouge lorsque celui-ci répond à certaines conditions (par exemple lorsque le noeud est une instance de la classe MonNoeud qui étend la classe DefaultMutableTreeNode).
Pour cela j'ai crée une classe qui étend DefaultTreeCellRenderer (voir ci-dessous) puis initialiser le Renderer de mon arbre avec celle-ci. Or cela ne marche pas vraiment, quelques noeuds ne correspondant pas au critère sont en rouge, et d'autres y répondant ne le sont pas. Cela semble régit par des règles bien précises, mais je n'arrive pas obtenir le résultat voulu.
Si quelqu'un peut m'aider...
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class NoeudRenderer extends DefaultTreeCellRenderer { public static final long serialVersionUID = 0; 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); //Si le noeud correspond à une MonNoeud il doit apparaitre en rouge if (value.getClass().equals(MonNoeud.class)){ this.setTextSelectionColor(Color.RED); this.setTextNonSelectionColor(Color.RED); } else { this.setTextSelectionColor(Color.BLACK); this.setTextNonSelectionColor(Color.BLACK); } return this; } }
Partager