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 :

[jtable] probleme de TableCellRenderer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut [jtable] probleme de TableCellRenderer
    Salut à tous,

    Voici mon souci:
    J'ai créé une classe extends TableCellRenderer que j'applique sur un jtable. Le but est simplement de changer la couleur de fond selon la valeur d'une des colonnes.

    J'ai 4 colonnes dans ma jtable et mon souci est que la couleur de fond n'est changée que dans les 2 colonnes du mileu...or moi, je veux que toute la ligne soit modifiée.

    Est ce que j'ai oublé quelque chose???

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le type des colonnes (columnClass) est bien le même pour les 4 colonnes ????

    Sinon montre le code de ta méthode getTableCellRendererComponent()

    a++

  3. #3
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    Le type des colonnes (columnClass) est bien le même pour les 4 colonnes ????
    Non, ce n'est pas le même.

    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
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    		((JLabel) renderer).setOpaque(true);
    		Color background = null;
    		Color foreground = null;
     
    		//Get the confidence Score
    		int confidenceScore = Integer.valueOf(((String) table.getValueAt(row, 2)).replace("%", ""));
     
    		//If the line is selected
    		if (isSelected) {
    		      foreground = Color.black;
    		      background = Color.blue;
    		}else{
    			//Colorize in fonction of confidence score
    			if (confidenceScore == 5) {
    				background = new Color(255, 199, 199);
    			} else if (confidenceScore == 4) {
    				background = new Color(255, 148, 148);
    			} else if (confidenceScore == 3) {
    				background = new Color(255, 97, 97);
    			} else if (confidenceScore == 2) {
    				background = new Color(255, 46 , 46);
    			}else if (confidenceScore == 1) {
    				background = new Color(255, 10, 10);
    			} else if (confidenceScore == 0) {
    				background = Color.red;
    			}
    		}
     
    		//Apply the color
    		renderer.setBackground(background);
    		renderer.setForeground(foreground);
    		return renderer;
    	}public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    		((JLabel) renderer).setOpaque(true);
    		Color background = null;
    		Color foreground = null;
     
    		//Get the confidence Score
    		int confidenceScore = Integer.valueOf(((String) table.getValueAt(row, 2)).replace("%", ""));
     
    		//If the line is selected
    		if (isSelected) {
    		      foreground = Color.black;
    		      background = Color.blue;
    		}else{
    			//Colorize in fonction of confidence score
    			if (confidenceScore == 5) {
    				background = new Color(255, 199, 199);
    			} else if (confidenceScore == 4) {
    				background = new Color(255, 148, 148);
    			} else if (confidenceScore == 3) {
    				background = new Color(255, 97, 97);
    			} else if (confidenceScore == 2) {
    				background = new Color(255, 46 , 46);
    			}else if (confidenceScore == 1) {
    				background = new Color(255, 10, 10);
    			} else if (confidenceScore == 0) {
    				background = Color.red;
    			}
    		}
     
    		//Apply the color
    		renderer.setBackground(background);
    		renderer.setForeground(foreground);
    		return renderer;
    	}

  4. #4
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    Désolé, j'ai fait un coller de trop!!!

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par javadoc
    setDefaultRenderer
    public void setDefaultRenderer(Class columnClass,
    TableCellRenderer renderer)Sets a default cell renderer to be used if no renderer has been set in a TableColumn. If renderer is null, removes the default renderer for this column class.

    Parameters:
    columnClass - set the default cell renderer for this columnClass
    renderer - default cell renderer to be used for this columnClass
    See Also:
    getDefaultRenderer(java.lang.Class), setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor)
    En fait, ton premier paramètre correspond à la classe à laquelle sera appliqué le renderer.
    Si la donnée dans une cellule de ta JTable égale columnClass, alors on applique le renderer passé en paramètre. Sinon, on ne l'applique pas.

    Donc tu dois faire un setRenderer(class, renderer), pour chacune des classes que tu peux rencontrer. (ou essayer avec Object)

  6. #6
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    OK, c'est tout bon!!!

    en fait, j'avais fait table.setDefaultRenderer(Object.class,table)
    mais, il faut spécifier une à une les classes!!!!

    Merci

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par menuge
    Non, ce n'est pas le même.
    As-tu bien utilisé la méthode setDefaultRenderer() avec les différents types ???

    Citation Envoyé par menuge
    Désolé, j'ai fait un coller de trop!!!
    Pense que tu peux toujours éditer tes messages : [IMG]images/buttons/edit.gif[/IMG]

    a++

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

Discussions similaires

  1. [JTable] Rendu du TableCellRenderer vs. TableCellEditor
    Par bouye dans le forum Composants
    Réponses: 4
    Dernier message: 02/05/2006, 22h37
  2. [JTable] probleme de constructeur et d'affichage
    Par hby dans le forum Composants
    Réponses: 3
    Dernier message: 01/05/2006, 16h43
  3. [JTable] probleme de rafraichissement
    Par biozaxx dans le forum Composants
    Réponses: 6
    Dernier message: 13/02/2006, 14h14
  4. [JTable] probleme suppression ligne
    Par lilou77 dans le forum Composants
    Réponses: 1
    Dernier message: 01/11/2005, 10h34
  5. [JSCROLLPANE][JTABLE] Probleme de raf...
    Par thibaud dans le forum Composants
    Réponses: 5
    Dernier message: 04/05/2004, 11h26

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