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 :

[JList] Couleurs par défaut


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Par défaut [JList] Couleurs par défaut
    Bonjour.

    Je suis en train d'implémenter la méthode getListCellRendererComponent pour mettre des JLabel avec des Icon dans une JList. Seulement en faisant ça, je perds les couleurs de sélection par défaut dans ma JList.
    Comment faire pour les récupérer, pour qu'elles soient en phase avec le look and feel courant ?
    Merci.

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    bonjour,
    le DefaultListCellRenderer hérite d'un JLabel.

    il suffit donc que ton ListCellRenderer hérite du DefaultListCellRenderer. puis que dans la méthode "getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)" tu fasse un appel au super.getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Par défaut
    J'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class MyListCellRenderer extends DefaultListCellRenderer {
    	public Component getListCellRendererComponent(JList list,
    		Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		return (Component)super.getListCellRendererComponent(list,value,index,isSelected,
    				cellHasFocus);
    	}
    }
    //...
    maListe.setCellRenderer(new MyListCellRenderer());
    Sauf que c'est le toString du JLabel qui s'affiche dans la JList
    A la base, j'avais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    maListe.setCellRenderer(new ListCellRenderer() {
    	public Component getListCellRendererComponent(JList list,
    			Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		Component component = (Component)value;
    		return component;
    	}
    });
    Et là j'avais bien le texte et l'icone du JLabel, c'est juste la sélection qui n'inversait pas les couleurs...
    J'aurais voulu faire un setBackground et un setForeground des couleurs "par défaut"

  4. #4
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Par défaut
    Le dernier code revient au même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class MyListCellRenderer implements ListCellRenderer {
    	public Component getListCellRendererComponent(JList list,
    		Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		return (Component)value;
    	}
    };
    Mais je n'ai toujours pas ma sélection qui marche

  5. #5
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Par défaut
    Bon j'aurais dû mieux regarder la doc...
    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
     
    class MyCellRenderer extends JLabel implements ListCellRenderer {
    	public Component getListCellRendererComponent(JList list,
    		Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		JLabel label = (JLabel)value;
    		if (isSelected) {
    			label.setBackground(list.getSelectionBackground());
    			label.setForeground(list.getSelectionForeground());
    		}
    		else {
    			label.setBackground(list.getBackground());
    			label.setForeground(list.getForeground());
    		}
    		label.setEnabled(list.isEnabled());
    		label.setFont(list.getFont());
    		label.setOpaque(true);
    		return label;
    	}
    }
    En sachant que pour la JList, je fais un setListData avec un tableau de JLabel.
    Autre solution plus proche de la doc :
    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
     
    class MyCellRenderer extends JLabel implements ListCellRenderer {
    	public Component getListCellRendererComponent(JList list,
    		Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		setText(((JLabel)value).getText());
    		setIcon(((JLabel)value).getIcon());
    		setToolTipText(((JLabel)value).getToolTipText());
    		if (isSelected) {
    			setBackground(list.getSelectionBackground());
    			setForeground(list.getSelectionForeground());
    		}
    		else {
    			setBackground(list.getBackground());
    			setForeground(list.getForeground());
    		}
    		setEnabled(list.isEnabled());
    		setFont(list.getFont());
    		setOpaque(true);
    		return this;
    	}
    }

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Par défaut
    J'en rajoute une couche...
    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
     
    maListe.setCellRenderer(new ListCellRenderer() {
    	public Component getListCellRendererComponent(JList list,
    			Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		JLabel label = (JLabel)value;
    		if (isSelected) {
    			label.setBackground(list.getSelectionBackground());
    			label.setForeground(list.getSelectionForeground());
    		}
    		else {
    			label.setBackground(list.getBackground());
    			label.setForeground(list.getForeground());
    		}
    		label.setEnabled(list.isEnabled());
    		label.setFont(list.getFont());
    		label.setOpaque(true);
    		return label;
    	}
    });
    Voilà, tout ça est équivalent ! 8)

  7. #7
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyListCellRenderer extends DefaultListCellRenderer { 
       public Component getListCellRendererComponent(JList list, 
          Object value, int index, boolean isSelected, boolean cellHasFocus) { 
         JLabel label = (JLable)super.getListCellRendererComponent(list,value,index,isSelected, 
                cellHasFocus); 
          label.setText(((JLabel)value).getText()); 
          label.setIcon(((JLabel)value).getIcon()); 
          label.setToolTipText(((JLabel)value).getToolTipText()); 
          return label;
       } 
    }

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

Discussions similaires

  1. Couleurs par défaut (Access 2000/2003)
    Par 2nis dans le forum Access
    Réponses: 1
    Dernier message: 24/06/2008, 10h25
  2. Réponses: 2
    Dernier message: 07/10/2007, 07h40
  3. Récupérer couleur par défaut graphe
    Par mthwt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2007, 22h53
  4. Couleur par défaut
    Par Tentative dans le forum Composants
    Réponses: 6
    Dernier message: 21/12/2005, 19h19
  5. [L&F] Couleur par défaut
    Par Xavinou dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 01/08/2005, 18h56

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