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 :

deux proprietés pour mes lignes? c'est possible


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 113
    Par défaut deux proprietés pour mes lignes? c'est possible
    salut tout le monde,

    je veux créer une JTable avec des lignes de couleur alternée et quand je selectionne une ligne, le background devient gris et le forgrounde devient rouge, est ce que cela est possible.

    j'ai pas pu faire les deux en meme temps, soit mes ligne sont alterné soit quand je selection une ligne, elle se transforme comme decrit ci dessus.

    est ce que je peux avoir les deux proprieté dans une meme JTable.

    voici ma classe:
    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
    public class ProprietesFenetre implements TableCellRenderer {
    	public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
    	public Component getTableCellRendererComponent(JTable arg0, Object value,
    			boolean isSelected, boolean hasFocus, int ligne, int colonne) {
    		// TODO Auto-generated method stub
    		Component renderer=DEFAULT_RENDERER.getTableCellRendererComponent(arg0, value, isSelected, hasFocus, ligne, colonne);
    		Color forground, background;	
    		if(isSelected){
    			forground=Color.RED;
    			background=Color.GRAY;
    		}
    		else{
    			forground=Color.BLUE;
    			background=Color.WHITE;
    		}
     
    		renderer.setForeground(forground);
    	    renderer.setBackground(background);
     
    	    if ((ligne & 1) == 0) {
     
    	        renderer.setBackground(Color.white);
     
    	        } else {
     
    	          renderer.setBackground(Color.lightGray);
     
    	        }
    		return renderer;
    	}
     
    	/**public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                          boolean hasFocus, int row, int column) {
                        JButton editor = new JButton();
                        if (value != null)
                            editor.setText(value.toString());
                        editor.setBackground((row % 2 == 0) ? Color.white : Color.cyan);
                        return editor;
                      }**/
     
    }

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 113
    Par défaut
    j'ai resolu à 60 % mon probleme:
    maintenant mes ligne sont alternées (blanc et jaune).

    quand je selectionne une ligne, le forground deveient en rouge mais le Background ne se change pas. je sais pas pourquoi
    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
    public Component getTableCellRendererComponent(JTable arg0, Object value,
    			boolean isSelected, boolean hasFocus, int ligne, int colonne) {
    		// TODO Auto-generated method stub
    		Component renderer=DEFAULT_RENDERER.getTableCellRendererComponent(arg0, value, isSelected, hasFocus, ligne, colonne);
    		Color forground, background;	
     
    		if(isSelected){
    			forground=Color.RED;
    			background=Color.GRAY;
    		}
    		else{
    			forground=Color.BLUE;
    			background=Color.WHITE;
    		}
     
     
     
    	    if ((ligne & 1) == 0) {
    	    	background=Color.WHITE;
    	        //renderer.setBackground(Color.white);
     
    	        } else {
    	        	background=Color.YELLOW;
    	          //renderer.setBackground(Color.YELLOW);
     
    	        }
    	    renderer.setForeground(forground);
    	    renderer.setBackground(background);
    		return renderer;
    	}

  3. #3
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Citation Envoyé par sitws Voir le message
    je sais pas pourquoi
    Parce que tu écrases la valeur de "background" que ta ligne soit sélectionnée ou non.
    C'est un simple problème d'algorithme

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 113
    Par défaut
    vraiment j'ai pas fait attention.

    alors je peux pas faire les deux en meme temps.?

  5. #5
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    mettez un point d'arrêt dans votre code, et observez son comportement en mode débogage.
    La solution vous viendra naturellement

    @ bientôt...

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 113
    Par défaut
    j'ai une classe Tache(nom, id, durée, type)
    ma table contient les colonnes(nom, id, durée)
    chaque ligne de ma Table est composé d'un objet Tache
    j'ai deux bouton(tache et rubrique), quand je clique sur le bouton Tache, j'ajoute une ligne dans ma table avec une tache qui a comme type"Tache" et quand je clique sur le bouton rubrique j'ajoute une ligne dans ma table qui contient un objet Tache avec la proprieté "Rubrique".
    Mon soucis est comment je dois faire pour colorrer seuelement les lignes qui ont comme type "rubrique"?

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

Discussions similaires

  1. Afficher un TpopupMenu avec de large ligne, c'est possible ?
    Par pepito62 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/04/2009, 10h10
  2. Réponses: 4
    Dernier message: 19/11/2008, 21h25
  3. Un filtre pour plusieurs TCD - C'est possible ?
    Par taisherg dans le forum Excel
    Réponses: 11
    Dernier message: 16/10/2007, 14h55
  4. Jlist et tooltip: un tooltip par ligne c'est possible?
    Par Invité dans le forum Composants
    Réponses: 6
    Dernier message: 29/01/2007, 17h40
  5. tableau qui a deux couleur pour les lignes <td>
    Par abdess6600 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 23/05/2006, 16h50

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