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

AWT/Swing Java Discussion :

Problème avec mon renderer


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Par défaut Problème avec mon renderer
    Bonjour tous le monde
    j'ai un problème avec ma jtable : normalement quand aucun renderer n'est appliqué sur la table , on peut selectionner les lignes (la ligne se colorie en bleu)
    mais quand j'applique mon renderer qui modifie la couleur des cellules suivant la valeur de d'autres cellules, cette selection n'est plus activée .
    pour d'autres renderer que j'ai trouvé sur le web et qui modifient aussi la couleur des cells ,ce problème n'est pas posé .
    voici mon renderer

    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
     
    import java.awt.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
     
     
    public class NewRenderer extends JTextArea implements TableCellRenderer {
     
     
    	 public NewRenderer () {
    	      setLineWrap(true);
    	      setWrapStyleWord(true);
     
    	      	    }
     
    public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
     
     
    	setText((String)value);
     
    	table.setColumnSelectionAllowed(true);
               table.setRowSelectionAllowed(true);
     
     
     
    if ( table.getModel().getValueAt(row,1).toString()=="150")
     
    	{
     
    		    this.setBackground(Color.orange);
     
     
    	}	
    	else 
     
    		if (table.getModel().getValueAt(row,1).toString()=="l12")
     
    		{
     
     
    		this.setBackground(Color.red);
    		setFont(new Font("SansSerif", Font.BOLD, 12));
     
     
    		}
    		else 
    			if (table.getModel().getValueAt(row,1).toString()=="l33")
     
    			{
    			System.out.println(row);
    			this.setBackground(Color.green);
    			setFont(new Font("SansSerif", Font.ITALIC, 12));
     
     
    			}
     
    	 //this.setForeground(Color.orange);
     
    		else 
    	{
    	this.setFont(new Font("SansSerif", Font.PLAIN, 12));
    	this.setBackground(Color.white);
    	this.setForeground(Color.black);
     
    	}
    	return this;
     
    }}

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Il te faut spécifier la couleur dans les cas ou une ligne est sélectionnée (cf. le paramètre "boolean isSelected").

    Soit tu mets une unique couleur quand sélectionné quelque soit la valeur de ta ligne.

    Soit tu prends en compte tes valeurs comme tu le fais déjà et tu éclaircis ou assombri cette couleur "par défaut" pour faire plus joli.


    Edit : exemple :

    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
     
     
    public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
     
     
    	setText((String)value);
     
    	table.setColumnSelectionAllowed(true);
               table.setRowSelectionAllowed(true);
     
     
     
    if ( table.getModel().getValueAt(row,1).toString()=="150")
     
    	{
     
                               if (!isSelected)
    		    this.setBackground(Color.orange);
                               else
    	                 this.setBackground(plusClair(Color.orange));
     
     
    	}

    ou plusClair() est ta fonction qui calcule une couleur plus claire.

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 110
    Par défaut
    ou plusClair() est ta fonction qui calcule une couleur plus claire.
    il y a la methode brighter() et darker() pour la classe Color.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Par défaut
    c une solution bonne et acceptable je l'avoue
    en fait moi je veux que quand je selectionne une cellule , toute la ligne est alors selectionne;
    or pour une ligne qui contient des cellules coloriés(dont le renderer est appliqué) et d'autres non je devrais avoir avoir la meme couleur de selection ;

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2006, 19h48
  2. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26
  3. Problème avec mon service mysql et PhpMyAdmin
    Par Fixazo dans le forum Outils
    Réponses: 1
    Dernier message: 28/08/2005, 18h02
  4. problème avec mon lecteur CD
    Par leo13 dans le forum Périphériques
    Réponses: 3
    Dernier message: 16/08/2005, 11h21
  5. Problème avec mon firewall ...
    Par Wis dans le forum Tomcat et TomEE
    Réponses: 15
    Dernier message: 06/04/2004, 08h46

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