Bonjour,
j'aimerais faire un JComboBox de selection de couleur, pour cela je veux utiliser l'interface ListCellRenderer afin d'avoir les couleurs.
voila mon code :
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 private class ColorComboBox extends JComboBox implements ActionListener{ static final long serialVersionUID = 1L; private Color selectedColor; public ColorComboBox(Color color){ selectedColor = color; ColorCellRenderer renderer = new ColorCellRenderer(); renderer.setPreferredSize(new Dimension(40, 15)); this.setRenderer(renderer); this.addItem(Color.RED); this.addItem(Color.YELLOW); this.addItem(Color.BLUE); this.addItem(Color.GREEN); this.setSelectedItem(color); this.addActionListener(this); } public ColorComboBox(){ new ColorComboBox(Color.RED); } public void actionPerformed(ActionEvent e){ try { selectedColor = (Color)this.getSelectedItem(); } catch (java.lang.ClassCastException ex){ } } public Color getSelectedColor(){return selectedColor;} private class ColorCellRenderer extends JPanel implements ListCellRenderer{ static final long serialVersionUID = 1L; public ColorCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ Color color; try { color = (Color)value; } catch (java.lang.ClassCastException e){ color = Color.BLACK; } setBackground(color); return this; } } }
voila mon probleme :
quand je clique sur la comboBox, j'ai bien mes quatres différents JPanel avec les bonnes couleurs qui sont renvoyés, pas de probleme. Par contre quand je sélectionne, la couleur disparait... comme sur l'image (cliquez pour agrandir) :
voila je sais pas quoi faire... je pense que je dois pas bien comprendre ListCellRenderer, mais je vois pas où ?? Est-ce que ça customize seulement quand le comboBox est cliqué ??
merci pour vous aide
Partager