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 :

JComboBox Custom Renderer: alignement d'un JLabel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut JComboBox Custom Renderer: alignement d'un JLabel
    Salut,

    J'utilise un renderer pour pouvoir ajouter à une JComboBox une petite icone comme ici.

    Le problème est que le JLabel, une fois centré à gauche, colle la bordure de la JList. J'aimerais pouvoir espacer cette bordure et le contenu du JLabel (icone et texte) tout en gardant l'alignement à gauche.

    Voici une image du problème:


    Et voilà le code du 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
     
    class ColorPreviewComboBoxRenderer extends JLabel implements ListCellRenderer {
     
    		Color activeCellBackground = Color.WHITE;
    		Color inactiveCellBackground = new Color(230, 230, 230);
    		Color activeCellForeground = Color.BLACK;
    		Color inactiveCellForeground = Color.BLACK;
     
    		public ColorPreviewComboBoxRenderer() {
    			setOpaque(true);
    			setHorizontalAlignment(LEFT);
    			setVerticalAlignment(CENTER);
    		}
     
    		public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
     
    		  int selectedIndex = ((Integer)value).intValue();
     
    		  if (isSelected) {
    		  	setBackground(activeCellBackground);
    		  	setForeground(activeCellForeground);
    		  } else {
    		  	setBackground(inactiveCellBackground);
    		  	setForeground(inactiveCellForeground);
    		  }
     
    		  ColorPreview icon = canvasColorList[selectedIndex];
    		  String colorStr = strColorList[selectedIndex];
     
    		  setIcon(icon);
    		  setText(colorStr);
    		  setFont(list.getFont());
     
    		  return this;
    	  }
    	}

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un truc pas fin qui pourrait marcher:

    un appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setBorder(BorderFactory.createEmptyBorder(0,2,0,2));
    ça te rajoutera des bordures vides sur les coté de ton JLabel

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


    Tu peux utiliser une bordure vide en tant que marge, par exemple en rajoutant dans le constructeur de ton renderer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBorder(BorderFactory.createEmptyBorder(0,5,0,5));
    A toi d'adapter cela à tes besoins...

    a++

    [edit] outch ! grillé

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Par défaut
    Lol

    Super, merci à vous deux.

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

Discussions similaires

  1. [JComboBox] l'Objet selected s'affiche dans le Renderer
    Par grabriel dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/03/2007, 14h08
  2. [Swing] JComboBox avec alignement
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/11/2006, 22h43
  3. [JComboBox] Problème de renderer
    Par hush dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/07/2006, 09h44
  4. [JTable][JComboBox] renderer et editor
    Par daedric dans le forum Composants
    Réponses: 1
    Dernier message: 25/05/2006, 18h29
  5. [SWING] JComboBox contenant des JLabel ou JPanel
    Par seiryujay dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 01/02/2006, 11h12

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