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 :

Colorier Certaine Lignes dans JXTreeTable


Sujet :

Composants Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut Colorier Certaine Lignes dans JXTreeTable
    Salut à tous!
    Voila, j'essaie de colorier mon JXTreeTable en fonction du contenu de ma ligne.
    Deux petites questions

    *J'ai compris qu'il fallait créer une classe qui hérite de TableCellRenderer, et qui redéfinis la méthode getTableCellRendererComponent.
    Mais j'ai un peu du mal avec son contenu, si quelqu'un pouvait m'éclairer

    *Comment fait t on pour relier cette classe à mon JXTreeTable?

    En vous remerciant par avance!

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Je connais pas JXTreeTable. Mais avec une JTable (swing) tu a une méthode setDefaultRenderer. Si cela peux t'aider...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Bonsoir,
    merci de ta reponse, il s'agit bien d'un JXTreeTable voici l'API .
    C'est un JTree avec plusieurs colonnes, et c'est pas fastosh à gerer
    Et il n'y a pas de methode setDefaultRenderer...

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Ah ok, cela correspond à un JTree et non une JTable comme je le croyais.
    Tu as une méthode setTreeCellRenderer qui prend un TreeCellRenderer en argument, cela ne correspond t-il pas à ce que tu cherche ?

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    En l'occurrence pour les JX* de SwingX, il y a le mécanisme des Highlighter qui permettent d'appliquer des couleurs (background et/ou foreground) aux lignes et colonnes du composant en fonction d'un HighlightPredicate. De préférence il faudra utiliser ça dans ce cas (mais JXTreeTable ayant beaucoup évolué dans les dernières version de SwingX, je ne sais pas trop quelles sont les dernières évolutions).

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Citation Envoyé par natha Voir le message
    En l'occurrence pour les JX* de SwingX, il y a le mécanisme des Highlighter qui permettent d'appliquer des couleurs (background et/ou foreground) aux lignes et colonnes du composant en fonction d'un HighlightPredicate. De préférence il faudra utiliser ça dans ce cas (mais JXTreeTable ayant beaucoup évolué dans les dernières version de SwingX, je ne sais pas trop quelles sont les dernières évolutions).
    Bonjour,merci mais les highliter ce n'est pas plutot pour alterner la couleur a chaque ligne? d'apres ce que je comprend on ne peut pas le personnaliser (après je comprend peut etre mal )

    Citation Envoyé par visiwi Voir le message
    Ah ok, cela correspond à un JTree et non une JTable comme je le croyais.
    Tu as une méthode setTreeCellRenderer qui prend un TreeCellRenderer en argument, cela ne correspond t-il pas à ce que tu cherche ?
    Super, en effet c'était ça!
    Mais je ne comprend pas pourquoi seul la méthode setText fonctionne, si je fait c'est OK mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    renderer.setBackground(Color.black);
    il n'y a rien qui change

    Une idée?merci

  7. #7
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par dibelup Voir le message
    Bonjour,merci mais les highliter ce n'est pas plutot pour alterner la couleur a chaque ligne? d'apres ce que je comprend on ne peut pas le personnaliser (après je comprend peut etre mal )
    Si si on peut faire ce qu'on veut tant que c'est pour changer les couleurs background ou foreground (à ne pas utiliser pour mettre du texte en gras par exemple). Alterner les couleurs c'est une des implémentation par défaut qui est fournie.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Citation Envoyé par natha Voir le message
    Si si on peut faire ce qu'on veut tant que c'est pour changer les couleurs background ou foreground (à ne pas utiliser pour mettre du texte en gras par exemple). Alterner les couleurs c'est une des implémentation par défaut qui est fournie.
    OK!
    Aurais tu un exemple?
    Ce que je veux faire, c'est, selon le contenu de la ligne, changer son arriere plan.
    Et avec juste l'API j'ai un peu de mal
    merci

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah un truc dans le style devrait faire l'affaire:

    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
     
     HighlightPredicate feverWarning = new HighlightPredicate() {
         int temperatureColumn = 10;
     
         public boolean isHighlighted(Component component, ComponentAdapter adapter) {
             return myTest(adapter.getValue(temperatureColumn));
         }
     
         private boolean myTest(Object value) {
             if (!value instanceof Number)
                 return false;
             return ((Number) value).intValue() > 37;
         }
     };
     
     Highlighter hl = new ColorHighlighter(feverWarning, Color.RED, null);
      myTreeTable.addHighLighter(hl);

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    pfiou, j'en ai un peu ch***
    mais j'ai fini par le faire marcher
    merci infiniment à vous!

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Par défaut
    Je met le code tous de meme!

    Le code d'une classe "MonHighlightPredicateJaune"

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    import java.awt.Color;
    import java.awt.Component;
    import org.jdesktop.swingx.decorator.ColorHighlighter;
    import org.jdesktop.swingx.decorator.ComponentAdapter;
    import org.jdesktop.swingx.decorator.HighlightPredicate;
    import org.jdesktop.swingx.decorator.Highlighter;
     
    public class MonHighlightPredicateJaune implements HighlightPredicate
    {
    //colonne a verifier
     
    	final int column =0;
     
        public boolean isHighlighted(Component component, ComponentAdapter adapter) 
        {
            return myTest(adapter.getValue(column));
        }
     
        private boolean myTest(Object value) 
        {
    //si il y a marqué operation3 dans ma colonne 0(qui est un en fait,mais on commence a 0, je renvoi true)
     
            	if(value.equals("Operation3"))
                {
                	return true;
                }
                return false;
        }
    //le highliter sera de la couleur choisi
        public static Highlighter getHighlighter(MonHighlightPredicateJaune feverWarning)
        {
        	return new ColorHighlighter(feverWarning, new Color(255, 255, 204), null);
        }
    }
    et ensuite dans ma frame où j'ai mon JXtreeTable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonHighlightPredicateJaune m4 = new MonHighlightPredicateJaune();
    Highlighter h4 =MonHighlightPredicateJaune.getHighlighter(m4);
    treeTable.addHighlighter(h4);
    en esperant que ça aide
    a bientot

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

Discussions similaires

  1. Extraire certaines lignes dans une table
    Par Santcho dans le forum Débuter
    Réponses: 10
    Dernier message: 31/05/2010, 14h22
  2. Récuperer certaines lignes dans un fichier txt
    Par forza262 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/10/2009, 16h26
  3. colorier une ligne dans un DBgrid
    Par looping dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2008, 08h22
  4. Colorier une ligne dans un StringGrid et cacher une colonne
    Par Siguillaume dans le forum Langage
    Réponses: 8
    Dernier message: 02/07/2008, 20h24
  5. [VBA-E] Colorier une ligne dans une feuille excel
    Par skyst3f dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/10/2006, 11h42

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