Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #12829

Re: JComboBox disabled Hintergrundfarbe

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:45 +0200
Message-ID <d5lr2cFrobeU1@mid.individual.net> (permalink)
References <1rqtuahkqc8dafom1g6ltab0eevj65k0kc@4ax.com> <msov80$ev3$1@newsreader4.netcologne.de> <isb0va9kpn679h0oa6jf5na3j0ug8e155d@4ax.com> <msphsa$sf9$1@newsreader4.netcologne.de> <d5loo2Fr4ecU1@mid.individual.net>

Show all headers | View raw


Am 13.09.2015 19:06, schrieb Peter Büttner:
> 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.
>

> Component getRendererComponent(...){
>     Component c= super.getRendererComponent(...);
>     c.setBackground(Color.YELLOW);
>     return c;
> }

Hier muss ich mich korrigieren, das ding reagiert so nicht.
Evtl. wird von der Combo (oder deren L&F) hinterher noch
etwas geändert, bei JTable gibt es da eine Methode prepareRenderer().

Ärgerlich.

Was bei einem schnellen Hack geht:
im DefaultListCellRenderer überschreiben (Das ding ist ein JLabel):
@Override
public Color getBackground() { return Color.YELLOW; }

Was nahelegt das nach dem renderer besorgen noch was
rumgefummelt wird.

(Früher hätte ich mich ja durch den Swingsource gequält
  um herauszufinden wo, das überlasse ich nun dem
  geneigten Leser)

[...]

> 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?

Das ist so auch falsch, die Farbe wird ja übernommen, nur nicht
im disabled Zustand.

Peter

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

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