Hintergrundfarbe der JComboBox

BlubBlub

Bekanntes Mitglied
Hi ich habe eine JComboBox erstellt.
In der ComboBox sind Elemente mit den Bezeichnungen:
"One"
"Two"
"Three"
"Four"
drin. Klappt man die ComboBox auf so werden das Element "Two" und "Four" in grauer Schrift
angezeigt. Die Elemente "One" und "Three" in schwarzer Schrift.
Fährt man mit dem Mauszeiger über die Elemente "Two" und Four" so ist die Textfarbe weiß und der
Hintergrund grau.
Fährt man mit dem Mauszeigen über die Elemente "One" und "Three" so ist die Schriftfarbe weiß und der Hintergrund blau.
Soweit so gut.
Aber wähle ich ein Element aus so ist der Hintergrund in Hauptanzeigefenster weiß. Genauer gesagt er ist immer weiß, anstatt grau, so wie es sein sollte wenn man comboBox.setEditable(false); gesetzt hat und keinen eigenen ListCellRenderer verwendet.
Wie kriege ich es hin dass das der Hauptanzeige Bereich der JComboBox immer eine graue Hintergrundfarbe hat und nicht wie momentan weiß?
Achtung: Die Hintergrundfarbe soll nicht einfach nur Hellgrau sein, sondern auch diesen drei Dimensionalen Effekt der sich aus einem hellen in der oberen Anzeigehälfte und einem dunklen Grau Ton in der unteren Anzeigehälfte ergibt. Der Aufruf comboBox.setBackground(Color.LIGHT_GRAY); ist also keine Lösung.

Java:
JComboBox comboBox = new JComboBox();
comboBox.setMaximumRowCount(5);
comboBox.setRenderer(new LabelListCellRenderer());
comboBox.setEditable(false);

ListValue one = new ListValue("One");
ListValue two = new ListValue("Two");
ListValue three = new ListValue("Three");
ListValue four = new ListValue("Four");

two.setTextValueColor(Color.GRAY);
four.setTextValueColor(Color.GRAY);

comboBox.addItem(one);
comboBox.addItem(two);
comboBox.addItem(three);
comboBox.addItem(four);

Java:
public class LabelListCellRenderer extends JLabel implements ListCellRenderer 
{

	@Override
	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
	{
		ListValue listValue = (ListValue)value;
		this.setText(listValue.getTextValue());

//ACHTUNG: Setze ich diesen Wert auf false, so habe ich die erwünschte 
//graue dreidimensionale Hintergrundfarbe im Hauptanzeigebereich der
// JComboBox allerinds sieht man dann beim Überfahren der einzelnen Auswahl
// Elemente nicht mehr den blauen bzw. Grauen Hintergrundbalken
		this.setOpaque(true); 

	    if(isSelected)
	    {
	        this.setForeground(UIManager.getColor("List.selectionForeground"));   
	        
	        if(listValue.getTextValueColor().equals(Color.GRAY))
	        	 this.setBackground(listValue.getTextValueColor());
	        else this.setBackground(UIManager.getColor("List.selectionBackground"));
	       
	    }
	    else
	    {
	    	this.setForeground(listValue.getTextValueColor());
	        this.setBackground(UIManager.getColor("List.background"));
	    }
		return this;
	}

}

Java:
public class ListValue
{
	private String textValue;
	private Color textValueColor;

	public ListValue(String textValue)
	{
	    this.textValue = textValue;
	    this.textValueColor = Color.BLACK;
	}
	  
	public String getTextValue()
	{
	    return textValue;
	}
	
	public void setTextValue(String textValue)
	{
		this.textValue = textValue;
	}
	
	public Color getTextValueColor() 
	{
	    return textValueColor;
	}
	  
	public void setTextValueColor(Color textValueColor) 
	{
	    this.textValueColor = textValueColor;
	}

	@Override
	public String toString()
	{
		return this.textValue;
	}
}




An diesen beiden Seiten habe ich mich übrigens orientiert.
Der erste Link bezieht sich auf eine JList der zweite auf eine JComboBox.
Java Schriftfarbe in JList ändern :: Ein Karlsruher Bloggt!
Java CodeGuru: (none)
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Genauso wie Du mit dem Renderer die Einträge der Dropdownliste einfärbst musst Du einen Editor schreiben, der sich entsprechend dem ausgewählten Eintrag umfärbt.
Stichwort ComboBoxEditor
 

BlubBlub

Bekanntes Mitglied
Na aber ich möchte gar nicht dass sich der Hauptanzeige Bereich umfärbt. Ich möchte einfach, dass der Hauptanzeige Bereich immer die Hintergrundfarbe hat, die man hat, wenn man keinen eigenen Renderer verwendet und comboBox.setEditable(false) setzt.
Zudem ist das ja keine eine spezielle Farbe sondern es sind zwei übereinander liegende Grautöne, die jeweils die hälfte des Hauptanzeigebereichs einnehmen und für den dreidimensionalen Effekt sorgen.

Was ich herausgefundent habe: Wenn ich im selbstegeschriebenen CellRenderer setOpaque(false) setze, dann hab ich auch die gewünschte Hintergrundfarbe.
Allerdings, hab ich dann beim Überfahren der aufgeklappten Liste keinen Balken mehr, dazu muss setOpaque(true) sein.
 

Michael...

Top Contributor
Na aber ich möchte gar nicht dass sich der Hauptanzeige Bereich umfärbt. Ich möchte einfach, dass der Hauptanzeige Bereich immer die Hintergrundfarbe hat, die man hat, wenn man keinen eigenen Renderer verwendet und comboBox.setEditable(false) setzt.
Zudem ist das ja keine eine spezielle Farbe sondern es sind zwei übereinander liegende Grautöne, die jeweils die hälfte des Hauptanzeigebereichs einnehmen und für den dreidimensionalen Effekt sorgen.
Wozu dann das ganze mit dem Renderer? Kein Wunder, dass ich das wesentliche überlesen habe ;-)

Das hört sich nach einer spezifischen Darstellung des LaF an. Bei mir schaut eine ComboBox nämlich anders aus.
Eventuell wird das gar nicht so einfach machbar sein, da man vermutlich ins LaF eingreifen müsste.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JComboBox Hintergrundfarbe des gewählten Items AWT, Swing, JavaFX & SWT 3
E Swing JComboBox Hintergrundfarbe AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
E JavaFX SplitMenuButton Hintergrundfarbe AWT, Swing, JavaFX & SWT 1
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
D Hintergrundfarbe AWT, Swing, JavaFX & SWT 6
C JavaFx TabelView - hintergrundfarbe möglich? AWT, Swing, JavaFX & SWT 1
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
M JavaFX MenuItem Hintergrundfarbe in CSS AWT, Swing, JavaFX & SWT 4
A JButtons - es wird beim falschen Button die Hintergrundfarbe angepasst AWT, Swing, JavaFX & SWT 2
C Swing Hintergrundfarbe von Submenüeinträgen setzen AWT, Swing, JavaFX & SWT 2
S Swing Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 9
R Swing Hintergrundfarbe der Zelle in einer JTable bei Markierung AWT, Swing, JavaFX & SWT 2
K Hintergrundfarbe des Frames ändern AWT, Swing, JavaFX & SWT 4
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
W Swing Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 4
S JTable Hintergrundfarbe AWT, Swing, JavaFX & SWT 5
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
Shanks Hintergrundfarbe durch Button click ändern ?? AWT, Swing, JavaFX & SWT 6
A Hintergrundfarbe eines Applets ändern AWT, Swing, JavaFX & SWT 2
Psypsy Swing Jpanel Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 10
E Hintergrundfarbe wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S Hintergrundfarbe in JToolbar nicht angezeigt AWT, Swing, JavaFX & SWT 2
P Swing Hintergrundfarbe auslesen und wieder setzen AWT, Swing, JavaFX & SWT 4
J Hintergrundfarbe von CheckBoxen in einer JTable AWT, Swing, JavaFX & SWT 4
R Hintergrundfarbe vom Fenster AWT, Swing, JavaFX & SWT 2
M Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 5
M AWT Hintergrundfarbe zuweisen AWT, Swing, JavaFX & SWT 6
T einzelne Zelle einer JTable auswählen und Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
calzone JTable und Hintergrundfarbe AWT, Swing, JavaFX & SWT 12
G Hintergrundfarbe eines JPanels zurücksetzen AWT, Swing, JavaFX & SWT 12
G JToggleButton - Hintergrundfarbe beim Drücken festlegen AWT, Swing, JavaFX & SWT 4
S Hintergrundfarbe in einer Spalte der JTable verändern AWT, Swing, JavaFX & SWT 3
G JTextArea - Hintergrundfarbe? AWT, Swing, JavaFX & SWT 5
hdi Hintergrundfarbe von Label AWT, Swing, JavaFX & SWT 2
T Warum nehmen diese Labels die Hintergrundfarbe nicht an? AWT, Swing, JavaFX & SWT 6
D Browser -> Hintergrundfarbe AWT, Swing, JavaFX & SWT 11
T jtree Hintergrundfarbe für ganze Zeile AWT, Swing, JavaFX & SWT 2
S Hintergrundfarbe eines JFrames ändern AWT, Swing, JavaFX & SWT 2
C Hintergrundfarbe von einem disabled Button ändern ? AWT, Swing, JavaFX & SWT 7
R JTable Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 7
foobar Hintergrundfarbe eines JMenus ändern AWT, Swing, JavaFX & SWT 2
O Hintergrundfarbe beim ToolTip AWT, Swing, JavaFX & SWT 5
J [Newbie] Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
J JTabbedPane Hintergrundfarbe Problem AWT, Swing, JavaFX & SWT 8
S Hintergrundfarbe für JFrame AWT, Swing, JavaFX & SWT 6
I Hintergrundfarbe beim JLabel AWT, Swing, JavaFX & SWT 3
G JList: Hintergrundfarbe eines Eintrags AWT, Swing, JavaFX & SWT 5
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
R JComboBox abfragen AWT, Swing, JavaFX & SWT 1
Esquid If Befehl bei JComboBox AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
D JComboBox Strings aus JTextFields zuordnen AWT, Swing, JavaFX & SWT 2
F JComboBox und Model AWT, Swing, JavaFX & SWT 10
I Editierbare JComboBox, die nur Ganzzahlen als Eingabewerte zulässt AWT, Swing, JavaFX & SWT 3
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
R Swing Java9 NullPointerException bei JComboBox AWT, Swing, JavaFX & SWT 13
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
D Swing JCombobox Weiße Leerzeilen AWT, Swing, JavaFX & SWT 10
G JComboBox: Arrow-Button permanent anzeigen AWT, Swing, JavaFX & SWT 4
D Swing Java JComboBox Example AWT, Swing, JavaFX & SWT 16
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
D Swing "blaues" Element aus JComboBox erhalten AWT, Swing, JavaFX & SWT 6
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
T JPanelsteuerung mit JComboBox AWT, Swing, JavaFX & SWT 5
N Swing Duplikate im Jcombobox vermeiden AWT, Swing, JavaFX & SWT 15
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
M Alle Schriftarten in JComboBox AWT, Swing, JavaFX & SWT 5
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
Sin137 JComboBox mit Generics AWT, Swing, JavaFX & SWT 14
R JComboBox erweitern AWT, Swing, JavaFX & SWT 5
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
V Editierbare JComboBox AWT, Swing, JavaFX & SWT 2
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
F neuen Menüpunkt in jcombobox einfügen AWT, Swing, JavaFX & SWT 1
F Swing Jcombobox mit manueller Rückgabe AWT, Swing, JavaFX & SWT 4
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
S JComboBox mit mehreren Spalten? AWT, Swing, JavaFX & SWT 6
J JComboBox + ItemListener AWT, Swing, JavaFX & SWT 12
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
D Swing Erstes Item einer JCombobox in JTable anzeigen AWT, Swing, JavaFX & SWT 2
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben