Bonjour,
Je viens d'écrire une extension du BasicComboBoxUI pour avoir une drop-down hyper basic: un Jlabel comme renderer et une simple petite flèche en guise bouton pour le popup.
Mon problème est que je n'arrive pas à faire prendre des couleurs à mon renderer: il reste obstinément blanc.
Voici le code du UI:
Dans le code j'essaye de le forcer à cyan pour voir ce que ça donner, mais ça ne donne rien. Idéalement, j'aimerais avoir la couleur qui a été spécifiée pour le JComboBox. Etrangement, et sans que je ne fasse rien, la partie bouton à la bonne couleur.
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 public class FlatComboUI extends BasicComboBoxUI { public FlatComboUI(JComponent component) { super(); } @Override public void installUI(JComponent c) { super.installUI(c); comboBox.setBorder(null); } @Override protected ListCellRenderer createRenderer() { return new FlatComboRenderer((clFlatComboBox)comboBox); } public static ComponentUI createUI(JComponent c) { return new FlatComboUI(c); } @Override protected JButton createArrowButton() { return new FlatComboArrowButton((clFlatComboBox) comboBox); } /** * Un render sous forme de Jlabel */ private class FlatComboRenderer implements ListCellRenderer { private JLabel editor ; private clFlatComboBox comboBox; private Color selectedBackground; public FlatComboRenderer(clFlatComboBox comboBox) { this.comboBox = comboBox; editor= new JLabel(); editor.setBorder(null); selectedBackground = (Color) UIManager.getDefaults().get("ComboBox.selectionBackground"); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { editor.setText(value.toString()); if (cellHasFocus) editor.setBackground(selectedBackground); else editor.setBackground(Color.cyan); //comboBox.getBackground()); return editor; } } private class FlatComboArrowButton extends JButton { ...
Merci pour vos suggestions.
Partager