7
votes

Couleur de fond de l'élément sélectionné dans un JCOMBOBOX UNEDITItable

La couleur d'arrière-plan de l'élément sélectionné dans un JCOMBOBOX UNEDITItable est une sorte de bleu:

texte alt

Y a-t-il un moyen de faire une couleur différente, telle que le blanc, par exemple?


1 commentaires

Liés, éventuellement en double, ne peut pas décider: Stackoverflow.com / Questions / 10258224 / ...


4 Réponses :


3
votes

Avez-vous essayé d'écrire votre propre, personnalisé, listcellrenderer code>?

Lorsque cette méthode est invitée à fournir un composant de rendu cellulaire, vous obtenez les arguments suivants: p>

 public Component getListCellRendererComponent(JList list,
                                               Object value,
                                               int index,
                                               boolean isSelected,
                                               boolean cellHasFocus) {


2 commentaires

Utilisez le code AIOOB fourni et simplement lancer une valeur de jlabel et définissez son arrière-plan sur la couleur souhaitée.


Oui, j'ai essayé ça. Cela peut changer l'apparence des éléments de menu comme vous les voyez dans la zone déroulante. Cependant, cela ne change pas l'apparence de l'élément sélectionné.



7
votes

L'arrière-plan attribué par le rendu est remplacé par la couleur de fond de sélection de la jlist utilisé dans la fenêtre contextuelle de la liste déroulante. Découvrez la méthode "PaintCurrentValue" de la classe BasicComboboxui. La solution de contournement serait donc:

JComboBox comboBox = new JComboBox(...);
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setSelectionBackground(Color.RED);


0 commentaires

9
votes

Cela devrait fonctionner

jComboBox1.setRenderer(new DefaultListCellRenderer() {
    @Override
    public void paint(Graphics g) {
        setBackground(Color.WHITE);
        setForeground(Color.BLACK);
        super.paint(g);
    }
});


1 commentaires

Cela ne fonctionne que si vous n'avez pas besoin de remplacer la méthode GetListCellrendererComponent de CellRenderer. Si vous devez le faire, utilisez le SEstelectionbackground, comme s'il était affiché dans la réponse de Camickr.



0
votes

Cela fonctionne pour moi:

myComboBox.setBackground(Color.RED);
myComboBox.repaint();


1 commentaires

S'il vous plaît essayez de donner une explication appropriée de la réponse.