Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: =?windows-1252?Q?Peter_B=FCttner?= Newsgroups: de.comp.lang.java Subject: Re: JComboBox disabled Hintergrundfarbe Date: Sun, 13 Sep 2015 19:45:47 +0200 Lines: 63 Message-ID: References: <1rqtuahkqc8dafom1g6ltab0eevj65k0kc@4ax.com> Reply-To: peter.buettner@gmx.net Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net cRqka02lnsTDxQI/uJn6ZQzkQ+RVUDhauqefpIXxCNQnKoxqkZ Cancel-Lock: sha1:H809dOMRo5K/cGCWBEtZe0Vzy/8= User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130330 Thunderbird/17.0.5 In-Reply-To: Xref: csiph.com de.comp.lang.java:12829 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 >>> 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