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 :

couleurs alternées dans un jList


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 161
    Par défaut couleurs alternées dans un jList
    Salut,
    Je veux avoir ma liste en ligne altérnée (une ligne avec une couleur et l'autre non)
    j'ai umplémenter la 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
    public class Rendu extends JLabel 
         implements ListCellRenderer { public Component getListCellRendererComponent(
           JList list,                  // Reference à ta liste
           Object value,            // valeur à afficher
           int index,                 // index de la ligne à afficher
           boolean isSelected,      // indique si ta ligne est sélectionnée
           boolean cellHasFocus)    
         {
             String s = value.toString();
             setText(s); // affiche la ligne
             if (isSelected) 
             {
            setBackground(Color.green);
    	setForeground(list.getSelectionForeground());
             }
             else 
             {
    	list.setBackground(Color.red);
    	setForeground(list.getForeground());
             }
            setEnabled(list.isEnabled());
             setFont(list.getFont());
             setOpaque(true);
             return this;}}
    Mais le probléme comment je fais l'appel dans ma propore List pour qu'elle soit altérnée ?

  2. #2
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Tu veux savoir comment appliquer ce CellRenderer à ta liste ? Si oui le code suivant est ce qu'il te faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          JList lst = new JList();
     
          lst.setCellRenderer(new Rendu());

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 161
    Par défaut
    J'ai essayé ton code mais ça change la totalité de l'arriére plan de la liste.
    Mais je veux que les lignes soient altérnées( couleur par couleur).
    Merci d'avance

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    C'est un peu normal, il faut se baser sur ta donnée index pour savoir quelle couleur appliquer.
    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(index%2 == 0) //ligne paire
    {
    }
    else //ligne impaire
    {
    }

  5. #5
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Essayes ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          if ((index & 1) == 1) {
             setBackground(Color.red);
          } else {
             setBackground(Color.green);
          }
    La condition (index & 1) == 1 teste si l'index est pair ou non.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 161
    Par défaut
    J'ai essayé ça mais il a chagé en rouge tout le text du jList
    et la partie vide de jList en un autre couleur...

  7. #7
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Montres nous le code STP.

  8. #8
    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,

    Citation Envoyé par RouRa22 Voir le message
    J'ai essayé ça mais il a chagé en rouge tout le text du jList
    et la partie vide de jList en un autre couleur...
    Tout cela n'est pas très clair

    De plus copie ton code modifié à chaque fois que tu le modifies (et si possible correctement indenté). Cela permet de déceler d'autres éventuelles erreurs. Par exemple dans le code de ton renderer à un moment tu modifies la couleur de la JList au lieu de celle de la cellule...


    Sinon, je te conseillerais plutôt d'hériter de DefaultListCellRenderer afin de bénéficier de l'implémentation par défaut (mieux optimisé). Par exemple avec ce code qui alterne les couleurs rouge/bleu sur les lignes qui ne sont pas sélectionné :
    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
    class Rendu2 extends DefaultListCellRenderer {
     
    	@Override
    	public Component getListCellRendererComponent(JList list, Object value,
    			int index, boolean isSelected, boolean cellHasFocus) {
    		Component c = super.getListCellRendererComponent(list, value + " " + index, index, isSelected, cellHasFocus);
    		if (!isSelected) {
    			if (index%2==0) {
    				c.setBackground(Color.RED);
    			} else {
    				c.setBackground(Color.BLUE);
    			}
    		}
    		return c;
    	}
    }
    a++

Discussions similaires

  1. Changement couleur de cellule dans un JList
    Par mugi21 dans le forum Composants
    Réponses: 2
    Dernier message: 27/02/2012, 21h22
  2. Couleur alternative du texte dans ListBox?
    Par roster dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 24/02/2009, 16h51
  3. Couleurs dans une JList
    Par kobrapercussions dans le forum Composants
    Réponses: 7
    Dernier message: 29/03/2007, 14h23
  4. Comment obtenir une couleur clignotante dans un TStringGrid ?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2005, 00h46
  5. Éléments de couleurs différentes dans un CheckListBox
    Par shogoune dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/06/2003, 20h17

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