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 :

[JComboBox] avec couleur en arrière Plan


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Points : 102
    Points
    102
    Par défaut [JComboBox] avec couleur en arrière Plan
    Bonjour,

    Je voudrais avoir un JComboBox avec des couleur en arrière plan et pourvoir lire la couleur choisie.

    J'ai trouvé un code qui fait exactement cela, mais je n'arrive pas a l'intégrer dans mon projet.

    Je voudrais simplement savoir comment utiliser ce code pour ajouter un Jcombobox de ce type dans mon Jpanel.

    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package gestion;
     
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.ListCellRenderer;
    import javax.swing.ToolTipManager;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.LineBorder;
    import javax.swing.border.MatteBorder;
     
    public class ColorComboRenderer extends JPanel implements ListCellRenderer {
      protected Color m_c = Color.black;
     
      public ColorComboRenderer() {
        super();
        setBorder(new CompoundBorder(
            new MatteBorder(2, 10, 2, 10, Color.white), new LineBorder(
                Color.black)));
      }
     
      public Component getListCellRendererComponent(JList list, Object obj,
          int row, boolean sel, boolean hasFocus) {
        if (obj instanceof Color)
          m_c = (Color) obj;
        return this;
      }
     
      public void paint(Graphics g) {
        setBackground(m_c);
        super.paint(g);
      }
     
      public static void main(String[] a) {
        JComboBox cbColor = new JComboBox();
        int[] values = new int[] { 0, 128, 192, 255 };
        for (int r = 0; r < values.length; r++)
          for (int g = 0; g < values.length; g++)
            for (int b = 0; b < values.length; b++) {
              Color c = new Color(values[r], values[g], values[b]);
              cbColor.addItem(c);
            }
        cbColor.setRenderer(new ColorComboRenderer());
     
        JFrame f = new JFrame();
        f.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
          }
        });
        f.getContentPane().add(cbColor);
        f.pack();
        f.setSize(new Dimension(300, 80));
        f.show();    
     
      }
    }
    Merci à tous.

  2. #2
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut
    Bonjour AbouZaid,

    Normalement, tu dois t'inspirer de cet exemple pour fabriquer ta propre combobox (ColorCombobox) que tu peux instancier comme une combo standard en appelant son constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ColorCombobox combo = new  ColorCombobox();
    On s'inspirant du code que tu as fourni, j'ai pu faire rapidement la classe "ColorCombobox" , pour t'aider, mais c'est à améliorer...

    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
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Graphics;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.ComboBoxModel;
    import javax.swing.DefaultComboBoxModel;
    import javax.swing.JComboBox;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.ListCellRenderer;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.LineBorder;
    import javax.swing.border.MatteBorder;
     
    public class ColorCombobox extends JComboBox<Color>{
     
    	private static final long serialVersionUID = 1L;
     
    	public ColorCombobox() {
    		setModel(createComboColorModel());
    		setRenderer(new ColorComboRenderer());
    	}
     
    	private ComboBoxModel<Color> createComboColorModel(){
    		List<Color> colorList = new ArrayList<>();
     
    		int[] values = new int[] { 0, 128, 192, 255 };
    		for (int r = 0; r < values.length; r++)
    			for (int g = 0; g < values.length; g++)
    				for (int b = 0; b < values.length; b++) {
    					Color c = new Color(values[r], values[g], values[b]);
    					colorList.add(c);
    				}
    		DefaultComboBoxModel<Color> model = new DefaultComboBoxModel<>(colorList.toArray(new Color[colorList.size()]));
    		return model;
    	}
     
    	private class ColorComboRenderer extends JPanel implements ListCellRenderer {
    		protected Color color = Color.black;
     
    		public ColorComboRenderer() {
    			super();
    			setBorder(new CompoundBorder(new MatteBorder(2, 10, 2, 10, Color.white), new LineBorder(Color.black)));
    		}
     
    		@Override
    		public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus) {
    			if (obj instanceof Color)
    				color = (Color) obj;
    			return this;
    		}
     
    		@Override
    		public void paint(Graphics g) {
    			setBackground(color);
    			super.paint(g);
    		}
    	}
    }
    Une fois ta classe est créée, tu peux l'utiliser comme ceci :

    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
     
    	public static void main(String[] a) {
     
    		ColorCombobox colorCombobox = new ColorCombobox();
    		Box box = Box.createHorizontalBox();
    		box.add(colorCombobox);
    		box.add(Box.createHorizontalGlue());
     
    		final JFrame f = new JFrame();
    		f.getContentPane().add(box, BorderLayout.NORTH);
    		f.setSize(700, 300);
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		SwingUtilities.invokeLater(new Runnable() {
    			@Override
    			public void run() {
    				f.setVisible(true);
    			}
    		});
     
    	}
    Awane
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2010
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    Merci awane.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/03/2010, 16h17
  2. [TABLE] Couleurs d'arrière-plan des TR alternées
    Par arkienou dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 17/02/2007, 15h48
  3. Réponses: 1
    Dernier message: 18/07/2006, 22h43
  4. Modifier la couleur d'arrière plan des dossiers
    Par FRED.G dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 26/04/2006, 13h09
  5. couleur d'arrière plan
    Par PAUL87 dans le forum Access
    Réponses: 4
    Dernier message: 27/12/2005, 11h23

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