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...

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;
    }
}
Merci.