# Hintergrundfarbe eines JPanels zurücksetzen



## Guest (13. Sep 2008)

Hallo!

Ich stehe grad etwas auf dem Schlauch.
Und zwar möchte ich einfach nur die Farbe eines JPanels auf das Standardgrau zurücksetzen, nachdem es vorübergehend zB. auf rot gesetzt war. Leider sind die Grautöne die von der Colorklasse angeboten werden nicht die richtigen - gibt es da eine einfache Möglichkeit den Standardgrauton herzukriegen? Danke!


----------



## L-ectron-X (13. Sep 2008)

setBackground(null) ?


----------



## Guest (13. Sep 2008)

L-ectron-X hat gesagt.:
			
		

> setBackground(null) ?



Danke,aber dann wirds leider durchsichtig  In meinem Fall nimmt dann das Panel die blaue Farbe des JFrames an.


----------



## L-ectron-X (13. Sep 2008)

dann vielleicht die Opazität zusätzlich noch zurück stellen.

setOpaque(false);


----------



## tobbbbi (13. Sep 2008)

Führt leider auch nicht zum gewünschten Ergebnis.

Muss ich wohl doch noch zu meiner Alternative greifen:
Beim Start des Programmes den Farbwert des JPanels abfragen und in eine Variable speichern, mit dieser Variable dann nach dem Rotfärben wieder auf das Standardgrau zurückfärben.

Oder weiß jemand was Besseres?


----------



## kleiner_held (14. Sep 2008)

So sollte es gehen:

```
jPanel.setBackground(null); // manuelle Konfiguration verwerfen
jPanel.updateUI(); // das L&F die Defaults anwenden lassen
```


----------



## tobbbbi (14. Sep 2008)

kleiner_held hat gesagt.:
			
		

> So sollte es gehen:
> 
> ```
> jPanel.setBackground(null); // manuelle Konfiguration verwerfen
> ...



Geht leider auch nicht - der Hintergrund wird dadurch durchsichtig.


----------



## L-ectron-X (14. Sep 2008)

Was auf jeden Fall funktioniert ist, so wie du es beschrieben hast, mit getBackground() die Farbe des Panels vor einer Farbänderung zu speichern und dann später bei Bedarf wieder zu setzen.


----------



## tobbbbi (14. Sep 2008)

L-ectron-X hat gesagt.:
			
		

> Was auf jeden Fall funktioniert ist, so wie du es beschrieben hast, mit getBackground() die Farbe des Panels vor einer Farbänderung zu speichern und dann später bei Bedarf wieder zu setzen.



Ja, das klappt auch in meinem Prog. Dachte nur, es gibt ne leichtere Methode um an die Standardfarbe zu kommen  :### Aber da scheinbar ihr Profis nichtmal was wisst, ist das wohl nicht vorgesehen. Danke trotzdem für eure Bemühungen!  :toll:


----------



## kleiner_held (14. Sep 2008)

So sollte es aber gehen 

```
panel.setBackground(new ColorUIResource(0, 0, 0));
panel.updateUI();
```
Edit:
Ich bin ein Held (ja tatsächlich), warum einfach wenns auch umständlich geht 

```
panel.setBackground(UIManager.getColor("Panel.background"));
```


----------



## tobbbbi (14. Sep 2008)

kleiner_held hat gesagt.:
			
		

> Edit:
> Ich bin ein Held (ja tatsächlich), warum einfach wenns auch umständlich geht
> 
> ```
> ...



Genial! Wusst ichs doch...
Jetzt musst du mir mal bitte verraten, wie man auf sowas kommt. :###


----------



## André Uhres (15. Sep 2008)

tobbbbi hat gesagt.:
			
		

> Jetzt musst du mir mal bitte verraten, wie man auf sowas kommt. :###


Betriebsgeheimnis  :bae:


----------



## kleiner_held (15. Sep 2008)

Ok, ich will einen Teil vom Betriebsgeheimnis lueften 
Fuer die von dir gesuchte Standardfarbe ist des Look and Feel (L&F) verantwortlich. 
Die ganzen Einstellungen, welche Farben im aktuellen L&F fuer welche Verwendungszweck festgelegt sind, lassen ueber den UIManager erfragen.
Eine gute Uebersicht darueber welche Keys existieren gibts z.B. hier.

Wenn es um mehr Details als nur Farben (und Schriftarten) geht, kann man sich auch die zugehoerigen ***UI Klassen anschauen (Quellcode liegt dem JDK ja bei), die haben meistens das gleiche Schema, z.B.: fuer JPanel

javax.swing.plaf.PanelUI - abstrakte Basisklasse ohne Logik
javax.swing.plaf.basic.BasicPanelUI - Grundimplementierung, die von den meisten L&F's als Basis genommen wird, manchmal auch (wie beim sehr simplen BasicPanelUI) von den meisten L&F's gar nicht ueberschrieben wird.
javax.swing.plaf.xyz.XYZPanelUI - (xyz = Name des L&F) spezielle L&F Implementierung die auf PanelUI oder BasicPanelUI aufsetzt, z.B: gibt es eine SynthPanelUI


----------

