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

 Java Discussion :

JTable Colorier cellules


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut JTable Colorier cellules
    Bonsoir à tout le monde,
    je cherche le moyen de colorier plusieurs cellules de ma JTable de couleurs différentes selon la manière suivante:
    1- Je sélectionne un certains nombres de cellules.
    2- Je clique sur un bouton
    3- Les cellules se colorent en arrière fond.

    J'ai essayé d'utiliser la méthode getTableCellRendererComponent. Cela marche bien pour la première tentative mais après, je ne parviens plus à resélectionner plusieurs cellules. Je ne suis pas sur que pour mon problème, cela soit cette méthode à utiliser mais je n'ai trouvé que cela.

    Un grand merci pour toute piste éventuelle.

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut
    tu peux voir ici

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut
    Bonsoir,
    Après quelques jours de travail dessus, j'ai enfin fini par faire fonctionner ce truc après quelques modifications du code. Ya pas mal de bricolages probablement incompréhensibles dans mon code mais bon, je le mets, ça peut tjs 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    import java.awt.Color;
    import java.awt.Component;
    import java.util.Hashtable;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
    class MT extends JTable
    {
        String cell;
        Color color=Color.orange;
        String cat="";
        Projet p;
     
        public MT(Projet p)
        {
            setDefaultRenderer(Object.class,new MyCellRenderer());
            this.p=p;
        }    
     
        public void changeSelection(int r,int c,boolean toggle,boolean extend)
         {
             super.changeSelection(r,c,toggle,extend);
             MyCellRenderer renderer = (MyCellRenderer) getDefaultRenderer(Object.class);
     
             Object val = getValueAt(r,c);
     
             cell=r+"-"+c;
             if (!cell.equals(renderer.cell))
             {
                 renderer.verif=true;
                 System.out.println("------------------------------------------");
                 if (renderer.iscolored(r,c))
                 {
                     System.out.println("white");
                     cat="";
                     renderer.makecolor(r,c,Color.white,"");
     
                 }
                 else
                 {
                     System.out.println("blue");
                     cat=p.cat;
                     renderer.makecolor(r,c,p.color,cat);
                 }
             }
         }
     
         class MyCellRenderer extends DefaultTableCellRenderer
         {
             java.util.ArrayList selectedValues = new java.util.ArrayList();
             Hashtable selValues=new Hashtable();
             Object v = null;
             String cell="";
             boolean verif=true;
     
             public Component getTableCellRendererComponent(JTable table,Object value,
                 boolean isSelected,boolean hasFocus,int row,int column)
             {
                 JLabel label = (JLabel) super.getTableCellRendererComponent(table,value,isSelected,
                 hasFocus,row,column);
                 setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
     
                 if (isSelected)
                 {
                     cell=row+"-"+column;
                     System.out.println("row1="+row);
                     System.out.println("column1="+column);
                     setBackground((Color)selValues.get(row+"-"+column));
                     System.out.println("put="+row+"-"+column);
                     System.out.println("texte="+value);                 
                     setText(cat);
     
                 }
                 else
                 {
                    if (selValues.containsKey(row+"-"+column))
                    {
                        setBackground((Color)selValues.get(row+"-"+column));
                        setText(""+selValues.get(row+"t"+column));
                    }
                    else
                        setBackground(Color.white);
                 }
                 return label;
             }
             public boolean iscolored(int row,int col)
             {             
                 if (selValues.containsKey(row+"-"+col))
                 {
                    if (selValues.get(row+"-"+col).equals((Color)(Color.white)))
                        return false;
                    else
                        return true;
                 }
                 else
                     return false;
             }
     
             public void makecolor(int row,int col,Color c,String cat)
             {
                 System.out.println("MAKECOLOR="+row+"-"+col);
                 selValues.put(row+"-"+col,c);
                 selValues.put(row+"t"+col,cat);
             }
         }
    }
    Merci encore pour ce code.

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

Discussions similaires

  1. [JTABLE] Colorier cellule selon sa valeur: 2 problemes
    Par Terminator dans le forum Composants
    Réponses: 1
    Dernier message: 28/05/2007, 23h39
  2. [jTable] Colorier une cellule
    Par Terminator dans le forum Composants
    Réponses: 16
    Dernier message: 28/05/2007, 16h54
  3. [JTable] Colorier une cellule d'une JTable
    Par Houssem dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2007, 14h54
  4. Colorier Cellule / ligne sélectionnée dans JTable
    Par Sebou77 dans le forum Composants
    Réponses: 7
    Dernier message: 06/09/2006, 12h04
  5. [JTABLE]Colorier certaine cellule
    Par cameleon2002 dans le forum Composants
    Réponses: 3
    Dernier message: 31/12/2005, 10h15

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