Il colore di sfondo della voce selezionata in un JComboBox non modificabile è una sorta di blu:colore di sfondo della voce selezionata in un non modificabile JComboBox
C'è un modo per rendere questo un colore diverso, come il bianco, per esempio?
Il colore di sfondo della voce selezionata in un JComboBox non modificabile è una sorta di blu:colore di sfondo della voce selezionata in un non modificabile JComboBox
C'è un modo per rendere questo un colore diverso, come il bianco, per esempio?
Questo dovrebbe funzionare
jComboBox1.setRenderer(new DefaultListCellRenderer() {
@Override
public void paint(Graphics g) {
setBackground(Color.WHITE);
setForeground(Color.BLACK);
super.paint(g);
}
});
Funziona solo se non è necessario eseguire l'override del metodo getListCellRendererComponent di CellRenderer. Se devi farlo, usa setSelectionBackground, come mostrato nella risposta di camickr. –
Hai provato a scrivere da solo, personalizzato, ListCellRenderer
?
Quando questo metodo viene chiesto di fornire un componente cellulare di rendering si ottengono i seguenti argomenti:
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
Usa il codice fornito Aioob e basta assegnare valore a una JLabel e impostare lo sfondo sul colore desiderato. – user489041
Sì, ci ho provato. Ciò può modificare l'aspetto delle voci del menu come le vedi nella casella a discesa. Tuttavia, non cambia l'aspetto dell'elemento selezionato. –
Lo sfondo assegnato dal renderer viene sovrascritto dal colore selezione sfondo del JList che viene utilizzato nella popup per la casella combinata. Controlla il metodo "paintCurrentValue" della classe BasicComboBoxUI. Quindi la soluzione alternativa sarebbe:
JComboBox comboBox = new JComboBox(...);
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setSelectionBackground(Color.RED);
Ciò influenzerà anche il rendering del popup. Se non vuoi che influenzi il popup, dovrai creare un renderizzatore personalizzato per impostare in modo specifico lo sfondo degli elementi selezionati.
correlate, possibilmente duplicare, non può decidere: http://stackoverflow.com/questions/10258224/change-background-color-editable-jcombobox –