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 :

Changer le background d'une cellule de JTable


Sujet :

Composants Java

  1. #1
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut Changer le background d'une cellule de JTable
    Bonjour à tous,

    je souhaite changer le background d'une cellule de ma JTable, malheureusement je n'arrive à modifier que la couleur du texte:
    J'utilise une classe qui implémente l'interface TableCellRenderer

    Voilà le code concerné:

    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
     
    switch(column){
     
    case 0: 
    iconWork = (ImageIcon)iconTable.get((String) table.getValueAt(row,1));
     
    j.setIcon((iconWork != null) ? iconWork : defaultIcon);
     
    if(isSelected) {
     
    	j.setBackground(Color.blue);
    	j.setForeground(Color.blue);
    }else{
    	j.setBackground(Color.white);
    	j.setForeground(Color.gray);
    }
     
    break;
    le setForeground() fonctionne parfaitement mais pas le setBackground()



    Si vous avez une idée je suis preneur car là je sèche un peu :S

  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
    Quel est le type de l'objet retourné par la méthode getTableCellRenderer() ?

  3. #3
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    J'utilise la méthode getTableCellRendererComponent et le type retourné est Component

  4. #4
    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
    Citation Envoyé par m@t
    J'utilise la méthode getTableCellRendererComponent et le type retourné est Component
    Oui mais ton Component est un JLabel ?

  5. #5
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Oui c'est un JLabel

    Voici méthode en entier

    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
     
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
     
    this.setHashtableIcones();
     
    // if is a cell (not a line of the table)
    if(value != null) {
     
    JLabel j = new JLabel();
    j.setText(value.toString());
    j.setFont(font);
     
    // put the icon at the first column associate with the file extension(col num 1)
    switch(column){
      case 0: iconWork = (ImageIcon)iconTable.get((String) table.getValueAt(row,1));
     
    					 	j.setIcon((iconWork != null) ? iconWork : defaultIcon);
    					 	if(isSelected) {
     
    					 		j.setBackground(Color.blue);
    						 	j.setForeground(Color.blue);
    					    }else{
    					       // j.setBackground(Color.white);
    					        j.setForeground(Color.gray);
    					    }
     
     
    					 	break;
     
    				case 1: j.setHorizontalAlignment(JLabel.LEFT);
    				 		j.setForeground(Color.gray);
    							break;
     
    				case 2: j.setHorizontalAlignment(JLabel.LEFT);
    				 		j.setForeground(Color.gray);
    						break;
     
    				case 6: j.setHorizontalAlignment(JLabel.LEFT);
    						j.setForeground(Color.gray);
    					break;	
    				case 3: j.setHorizontalAlignment(JLabel.RIGHT);
    						j.setForeground(Color.gray);
    					break;	
    				case 4: j.setHorizontalAlignment(JLabel.RIGHT);
    				 		j.setForeground(Color.gray);
    					break;	
    				case 5: j.setHorizontalAlignment(JLabel.RIGHT);
    						j.setForeground(Color.gray);
    					break;	
     
    			}	   
    			return j;
     
    	    }else{
    			return null;
    	    }
    	}

  6. #6
    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
    Il manque l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    j.setOpaque(true);

  7. #7
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    C'est voulu mais même en mettant l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j.setBackground(Color.blue);
    juste avant de renvoyer le JPanel mais rien n'y fait

  8. #8
    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
    regarde mon post précédent, je l'ai modifié.

  9. #9
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Ok c'est ça, nickel

    Merci pour ton aide

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/03/2009, 09h35
  2. [JTable]Définir à tout moment le background d'une cellule
    Par krolineeee dans le forum Composants
    Réponses: 10
    Dernier message: 11/09/2006, 17h35
  3. [JTable] Changer la couleur d'une cellule
    Par Freak49 dans le forum Composants
    Réponses: 1
    Dernier message: 06/10/2005, 18h11
  4. [C#]Changer l'image d'une cellule d'un datagrid
    Par Scorff dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/04/2005, 09h35
  5. Editer une cellule de Jtable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 22/04/2004, 10h45

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