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 :

[Swing] Modifier la couleur d'une cellule de JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Par défaut [Swing] Modifier la couleur d'une cellule de JTable
    Salut à tous,

    Voilà mon problème, j'essaie de faire en sorte qu'à chaque fois que l'utilisateur clique sur un JLabel, la deuxième colonne de la ième ligne de JTable se met à jour en modifiant sa couleur de fond avec la couleur de fond du JLabel.
    Pour cela, j'ai crée mon propre Renderer que j'ai affecté à la colonne en question.
    Le problème est que je ne sais pas comment "déclencher" le renderer dans le listener du JLabel.

    Voici mon code :

    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
     
    import java.awt.Component;
     
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
    public class JTableRenderer extends DefaultTableCellRenderer {
     
    	  /**
             * 
             */
    	private static final long serialVersionUID = -717160837108350092L;
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    	        Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    	        JLabel label = (JLabel) component;
    	        component.setBackground(label.getBackground());
     
    	        return component;
    	    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TableColumn col = table.getColumnModel().getColumn(1);
    col.setCellRenderer(new JTableRenderer());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    private MouseListener setColorAction = new MouseAdapter() {
    		@Override
    		public void mouseClicked(MouseEvent evt) {
    			JLabel label = (JLabel) evt.getSource();
    			//je souhaiterais déclencher le renderer ici afin de modifier la cellule de la JTable
    		}
     
     
    	};

  2. #2
    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
    Aucune chance que ça marche ton truc, tu ne fais qu'appliquer au composant que tu retournes sa propre couleur de fond dans ton Renderer ^^...


    Dans ton cas l'idée serait que ton renderer garde une référence sur ton JLabel, et d'utiliser cette référence pour savoir de quelle façon il doit se dessiner, et de faire un repaint sur la JTable en cas de click sur ton JLabel.

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Par défaut
    Oui effectivement, je viens de m'en rendre compte grâce à toi ..
    Mais en fait je ne sais pas comment modifier la couleur d'une cellule de la JTable. De plus, est-ce que je dois le faire dans le MouseListener ou bien ailleurs ?

    Merci de votre aide !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Par défaut
    Voici les modifications que j'ai apportées.
    Mais je ne sais quand le CellRenderer se déclenche ...

    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
     
    import java.awt.Color;
    import java.awt.Component;
     
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
     
    public class JTableRenderer extends DefaultTableCellRenderer {
     
    	  /**
             * 
             */
    	private static final long serialVersionUID = -717160837108350092L;
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    	        //Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    	        Component cell = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    	        cell.setBackground((Color)value);
     
    	        return cell;
    	    }
    }

Discussions similaires

  1. Modifié la couleur d'une cellule
    Par keks42 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/08/2008, 08h53
  2. Modifier la couleur d'une cellule
    Par KRis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/05/2008, 09h56
  3. Modifier la couleur d'une cellule
    Par karkass59 dans le forum Excel
    Réponses: 2
    Dernier message: 07/04/2008, 10h46
  4. Comment modifier la couleur d'une cellule d'un TStringgrid
    Par francois.delpierre dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/11/2007, 12h38
  5. [Word97 / Delphi6] Comment modifier la couleur d'une cellule ?
    Par Lolo1988 dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 29/10/2007, 10h48

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