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 certaines cellules dans un JTable


Sujet :

Composants Java

  1. #1
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut Colorer certaines cellules dans un JTable
    Bojour à tous...
    Pour que mon Tableau de bord (crée en JTable) soit plus lisible je compte colorer certaines cellules suite à la vérification de certaines conditions...
    Comment je pourrais le faire?

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Pour ma part, je m'intéresserais à la classe DefaultTableCellRenderer .

    En effet celle ci permet de redéfinir le comportement de tes cellules.

    Imaginons que tu veuilles colorier en rouge, toutes les cellules comportant comme texte "toto".

    Je ne suis pas sur de mon code, n'ayant pas d'environnement propice pour le testé.

    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
     
    public class ColorCellRenderer extends DefaultTableCellRenderer
    {
     
    public ColorCellRenderer(){
    }
     
    @Override
    public Component getTableCellRendererComponent(  
    JTable table, Object value, boolean isSelected, 
    boolean hasFocus, int row, int col)
    {
      // on utilise le renderer super qui va tenir compte de
      // tout ce qu'on a besoin (sélection, focus)
         Component comp = super.getTableCellRendererComponent(
                          table,  value, isSelected, hasFocus, row, col);
     
     // On récupère le contenu du model en fonction de la colonne/ligne
     String s =  table.getModel().getValueAt(row, col).toString();
     
         // On vérifie que le contenu suffit a notre condition
         if(s.equalsIgnoreCase("toto")) 
         {
             // On applique le fond de couleur particulier.
             comp.setForeground(Color.red);
         }
         else 
         {
             comp.setForeground(null);
         }
     
         return( comp );
     }
     
     }
    Pour appliquer un renderer a une JTable je te renvois a la FAQ :FAQ GUI.

  3. #3
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Bonjour
    Merci vantom

    Enfin ça parait simple...
    Il faut que je définisses mapropre classe java qui définit l'affichage de mes cellules :
    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
     
    import java.awt.Color;
    import java.awt.Component;
     
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
    public class MonCellRenderer extends DefaultTableCellRenderer {
     
     
     
    		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);
     
    			if (row == 1 && column == 1)
    				cell.setBackground(Color.CYAN);
    			else
    				cell.setBackground(Color.WHITE);
    			return cell;
    		}
     
    	}
    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JTable table = new JTable();
    table.setDefaultRenderer(Object.class, new MonCellRenderer());
    Et Merci encore

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

Discussions similaires

  1. comment colorer une cellule dans un JTable sous NerBeans?
    Par khadi8 dans le forum Composants
    Réponses: 1
    Dernier message: 22/04/2012, 17h39
  2. Réponses: 3
    Dernier message: 28/12/2010, 02h16
  3. problème de couleur de cellule dans une JTable
    Par rprom1 dans le forum Composants
    Réponses: 3
    Dernier message: 04/04/2007, 00h01
  4. Problème de coloration de cellules dans un DBGrid
    Par amaurylerouxdelens dans le forum Delphi
    Réponses: 7
    Dernier message: 08/11/2006, 13h47
  5. Comment modifier une cellule dans un JTable
    Par @yoyo dans le forum Composants
    Réponses: 10
    Dernier message: 22/03/2006, 16h48

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