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 :

Colorer des résultats dans JTable avec des couleurs differentes


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut Colorer des résultats dans JTable avec des couleurs differentes
    Bonjour,
    j'ai une jTable remplis a partir d'une concaténation de deux listes et une colonne qui indique les differences entres les deux listes :
    Exmpl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Resultat Comparaison |   Liste1   |  Liste2
    -------------------------------------
    =                           |    A1       |  A1
    <                           |    A2       |  B2
    >                           |    A3       |  D3
    #                           |    A4       |  C8
    =                           |    A5       |  A5
    ce que je veux faire c'est colorer mes deux listes selon le résultat de comparaison si les deux listes sont egaux je colore la liste1 en bleu et la liste2 en vert .
    lpour la # je colore la liste1 en rouge et la liste2 en jaune ainsi de suite.
    ya t'il un moyen de faire ca ?
    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Tu peux gérer la couleur via le TableCellRenderer.
    Par défaut il doit s'agir de la classe DefaultTableCellRenderer qui contient la méthode setBackGround();

    Pour récupérer le renderer : JTable getCellRenderer(row, col)

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Tu dois créer ton propre tablecellrenderer (en étendant un existant, éventuellement). Tu surcharge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    getTableCellRendererComponent(JTable table,
                                            Object value,
                                            boolean isSelected,
                                            boolean hasFocus,
                                            int row,
                                            int column)
    et tu y met le code pour changer la couleur de fond.

  4. #4
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut
    salut,
    merci pour vos reponse.
    c'est ce que j'ai fait j'ai créer mon propre tablecellrenderer
    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
        public Component getTableCellRendererComponent
        (JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
        Component cell = super.getTableCellRendererComponent  
             (table,value,isSelected,hasFocus,row,column);       
        String s =  table.getModel().getValueAt(row,1).toString();
     
     
        if(s.equalsIgnoreCase("="))
        {
            cell.setForeground(Color.red);
          }
        else if (s.equalsIgnoreCase("#"))
        {
            cell.setForeground(Color.green);
     
        }
        else if (s.equalsIgnoreCase(">"))
        {
     
            cell.setForeground(Color.orange);
     
        }
     
        return cell;
    et dans ma classe Jtable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     for(int i = 2;i<=sourceView.size();i++)
          {
          resultatTable.getColumnModel().getColumn(i).setCellRenderer(new Couleur());
          }
          for(int i = sourceView.size();i<=2*(targetView.size());i++)
          {
          resultatTable.getColumnModel().getColumn(i).setCellRenderer(new Couleur());
          }
    mais je suis pas comment faire pour afficher chaque liste avec une couleur selon mon test sur le résult

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Définis le renderer directement pour la JTable et pas case par case, ça t'évitera d'en créer énormément (ça consomme des ressources ces petites bêtes).

    Maintenant, qu'est-ce que tu appelle une "liste"? JTable ne connais que les lignes, les colonnes et les cellulles

  6. #6
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut
    pour moi jtable est remplis a partir de la concaténation des deux listes comme je l'ai expliqué au debut

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    justement, je ne comprend pas ce que tu n'arrive pas à faire? Une liste = un colonne complète dans la table. Tu veux changer la couleur de la colonne, ok, mais en fonction de quoi? le résultat, c'est par ligne, pas par colonne.

  8. #8
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    justement, je ne comprend pas ce que tu n'arrive pas à faire? Une liste = un colonne complète dans la table. Tu veux changer la couleur de la colonne, ok, mais en fonction de quoi? le résultat, c'est par ligne, pas par colonne.
    je veux changer la couleur de la ligne et la colonne selon le résultat par ligne
    exp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
    Resultat Comparaison |   Liste1                     |  Liste2
    -----------------------------------------------------------------
    =                           |    A1 (couleur rouge)   |  A1 (couleur vert)
    <                           |    A2 (couleur bleu)     |  B2 (couleur jaune)
    >                           |    A3  (couleur gris)     |  D3 (couleur orange)

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ha c'est plus clair. Mais dans ce cas le code que tu nous a donne est déjà sur la bonne voies (test des = < >), il faut juste, dans chaque cas, rajouter un test sur le numéro de colonne. (si = et oclonne 2 alors rouge, si = et colonne 3 alors vert, etc)

  10. #10
    Membre régulier
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Points : 115
    Points
    115
    Par défaut
    mon probleme c’était comment tester sur les colonnes pour les listes de size#
    donc fallait passer les sizes pour ma classe tablecellrenderer et tester sur les colonnes de chaque liste
    merci bcp tchize pour ton aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2015, 15h06
  2. Réponses: 1
    Dernier message: 03/02/2015, 11h20
  3. Réponses: 11
    Dernier message: 26/12/2009, 17h29
  4. [AC-2000] Changer couleur des résultats dans zone de liste
    Par SLEGRAND76 dans le forum IHM
    Réponses: 4
    Dernier message: 01/10/2009, 20h11
  5. JTable avec des JPanel dans les cellule
    Par pigpen dans le forum Composants
    Réponses: 11
    Dernier message: 13/04/2006, 19h58

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