IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTree] Couleur du texte des noeuds


Sujet :

Composants Java

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet, concepteur
    Inscrit en
    Mai 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet, concepteur

    Informations forums :
    Inscription : Mai 2003
    Messages : 50
    Points : 46
    Points
    46
    Par défaut [JTree] Couleur du texte des noeuds
    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.

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    bonjour,

    essaie en positionnant d'abord la couleur du texte, et seulement après tu configures le renderer :
    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 Component getTreeCellRendererComponent(JTree tree, Object value,
                                                  boolean sel, boolean expanded,
                                                  boolean leaf, int row, boolean hasFocus) {
     
       //Si le noeud correspond à une MonNoeud il doit apparaitre en rouge 
       if (value.getClass().equals(MonNoeud.class)) {
           setTextSelectionColor(Color.RED);
           setTextNonSelectionColor(Color.RED);
       } else {
            setTextSelectionColor(Color.BLACK);
            setTextNonSelectionColor(Color.BLACK);
       }
       super.getTreeCellRendererComponent(tree, value,
                                          sel, expanded,
                                          leaf, row, hasFocus);
       return this; 
    }
    Sinon, le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value.getClass().equals(MonNoeud.class))
    peut avantageusement se réécrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value instanceof MonNoeud

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet, concepteur
    Inscrit en
    Mai 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet, concepteur

    Informations forums :
    Inscription : Mai 2003
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Cela fonctionne parfaitement. En fait j'était pas loin

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Changer la couleur du texte des boutons
    Par OR34a dans le forum Lazarus
    Réponses: 4
    Dernier message: 25/07/2013, 18h16
  2. couleur du texte du noeud d'un treeview
    Par TaymouWan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/04/2009, 10h50
  3. [JTree] des noeuds et enfants dans différentes couleur
    Par visiwi dans le forum Composants
    Réponses: 3
    Dernier message: 02/07/2008, 15h29
  4. Couleur du texte des signets
    Par PetitPapaNoël dans le forum Visual C++
    Réponses: 0
    Dernier message: 23/05/2008, 08h57
  5. [JTree] Couleur des noeuds
    Par Zouko dans le forum Composants
    Réponses: 3
    Dernier message: 06/04/2008, 19h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo