Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #12828
| From | Peter Büttner <not_for_mail_peb@gmx.net> |
|---|---|
| Newsgroups | de.comp.lang.java |
| Subject | Re: JComboBox disabled Hintergrundfarbe |
| Date | 2015-09-13 19:06 +0200 |
| Message-ID | <d5loo2Fr4ecU1@mid.individual.net> (permalink) |
| References | <1rqtuahkqc8dafom1g6ltab0eevj65k0kc@4ax.com> <msov80$ev3$1@newsreader4.netcologne.de> <isb0va9kpn679h0oa6jf5na3j0ug8e155d@4ax.com> <msphsa$sf9$1@newsreader4.netcologne.de> |
Am 09.09.2015 17:05, schrieb Patrick Roemer:
> Responding to Gerhard Landeck:
>> On Wed, 9 Sep 2015 11:47:44 +0200, Patrick Roemer
>> <sangamon@netcologne.de> wrote:
>>>> ich muss die den Hintergrund einer nicht enableten JComboBox weiß
>>>> setzen oder wenigstens die Schriffarbe schwarz, damit es besser
>>>> lesbar ist. Das funktioniert aber weder mit setBackGround() noch mit
>>>> getEditor().getEditorComponent().setBackGround().
>>>
>>> Wenn es disabled ist, kann man nicht editieren, also kommt auch kein
>>> Editor zum Zug. Das müsste also eher über den Renderer gehen.
>>
>> Ja, verstehe bloß nicht, warum ein einfaches "setBackground()" nicht
>> geht. Bei JTextField geht's ja auch.
> Weil man den Background der eigentlichen JComboBox-Komponente nicht
> sieht, wenn eine Renderer- oder Editorkomponente (mit eigenem
> Background) drübergemalt ist.
Wenn man in der ComboBox Text eingeben kann wird (AFAIR) der editor
genutzt zu rendern, ansonsten der ListCellRenderer.
Hier ist der Ansatz: eigenen Renderer setzen. Das ist ganz einfach:
DefaultListCellRenderer beerben: [Namen sind eher grob geschätzt]
Component getRendererComponent(...){
Component c= super.getRendererComponent(...);
c.setBackground(Color.YELLOW);
return c;
}
Alternativ kann man mal gucken wo die Farbe herkommt.
Früher (so 1.4, da kannte ich den Swing-Quelltext besser) gab
es im 'Wurzelverzeichnis' des Look&Feel eine recht große Klasse
wo alle möglichen Einstellungen gesetzt wurden. So in der Art
dings.put("ComboBox.background.disabled", "#cccccc");
Da könnte man nach Initialisierung des L&F was von außen
überschreiben. Also die 'Konstante' suchen. Hier findet
man auch welche Farbe man für eine enabled Combo setzen muß,
denn wenn man es korrekt macht beachtet man das der Benutzer
in seinem OS ein anderes Farbschema setzen kann, da muss das
nicht Weiß sein, kann auch gruftiges Schwarz oder eine pinke
Bonbonfarbe sein.
Die Kür - eher übertrieben - reagiert auch auf Änderungen des
Farbschemas zur Laufzeit der Anwendung. Da das aber so selten
vorkommt und solche Javaprogramme meist im geschäftlichen
Umfeld genutzt werden würde ich das als 'zu Teuer' und die
'Anwender sollen in der Arbeitszeit nicht so viel rumspielen'
sein lassen :-)
Ach ja [Warum combobox.setBackground() nix bewirkt]:
Das was man bei einer Combobox sieht ist im aufgeklappten
Zustand eine JList, deshalb ist das auch ein ListCellRenderer.
Daher hat der Renderer auch die Farbe der JList. Ich könnte
mir vorstellen das im zugeklappten Zustand auch eine einzeilige
JList hingefriemelt wird, denn der Renderer kriegt ja eine JList
übergeben, der weis nix von einer ComboBox.
Evtl. haben die Entwickler vor ~20 Jahren vergessen den background
der JList und JComboBox abzugleichen?
Peter
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
JComboBox disabled Hintergrundfarbe Gerhard Landeck <spam@glandeck.de> - 2015-09-08 16:14 +0200
Re: JComboBox disabled Hintergrundfarbe Patrick Roemer <sangamon@netcologne.de> - 2015-09-09 11:47 +0200
Re: JComboBox disabled Hintergrundfarbe Gerhard Landeck <spam@glandeck.de> - 2015-09-09 15:10 +0200
Re: JComboBox disabled Hintergrundfarbe Patrick Roemer <sangamon@netcologne.de> - 2015-09-09 17:05 +0200
Re: JComboBox disabled Hintergrundfarbe Peter Büttner <not_for_mail_peb@gmx.net> - 2015-09-13 19:06 +0200
Re: JComboBox disabled Hintergrundfarbe Peter Büttner <not_for_mail_peb@gmx.net> - 2015-09-13 19:45 +0200
Re: JComboBox disabled Hintergrundfarbe Peter Büttner <not_for_mail_peb@gmx.net> - 2015-09-13 23:08 +0200
csiph-web