Le fond de mon nouveau UI reste blanc !
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:
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
| 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 {
... |
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.
Merci pour vos suggestions.