[RESOLU]probleme ListCellRenderer et JComboBox
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:
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) :
http://i21.servimg.com/u/f21/11/56/66/77/th/combo10.png
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