Halbtransparentes JPanel ins Fenster legen, um die Komponenten "milchig" darzustellen

DarthShader

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem mit Swing:

Ich möchte gerne den Inhalt meines JFrames "milchig" machen, indem ich einfach ein JPanel mit einer halbtransparenten Farbe in den JLayeredPane des JFrames lege. Dadurch liegt das JPanel über allen anderen Komponenten und da der Alphawert der Farbe 0.5f beträgt (und die RGB Werte des JPanels weiß sind), wird alles etwas heller, quasi milchig.

Nun bin ich in der Situation, in der ich dies schonmal erfolgreich gemacht hatte, es nun aber nicht mehr hinbekomme (den alten Code habe ich leider nicht mehr). Mein JPanel wird nicht halbtransparent gezeichnet, was natürlich dazu führt, dass der Hintergrund nicht mehr zu sehen ist.

Die Frage ist, wie gehe ich bei Swing korrekt vor? Ich denke da an folgende Reihenfolge:

1. JPanel anlegen, ihm eine halbtransparente Hintergrundfarbe geben
2. Den LayeredPane eines JFrames holen
3. Das JPAnel auf die Größe des LayeredPane setzen
4. Das JPanel dem LayeredPane hinzufügen
5. Das LayeredPane mit validate() validieren


Sollte das nicht alles so korrekt sein? Wieso ist das JPanel dann nicht halbtransparent? Habe ich irgendwelche Aufrufe vergessen?


Über ein paar Tipps oder Ideen dazu würde ich mich sehr freuen

Danke!
 
Sowas?

Java:
public static void main(String[] args) {
	JFrame frame = new JFrame("Beispiel");
	frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	frame.setBounds(100, 100, 200, 200);
	final Container contentPane = frame.getContentPane();
	contentPane.setBackground(Color.red);
	frame.setLayout(null);

	JPanel panel = new JPanel();
	panel.setBounds(0, 0, 100, 100);
	panel.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.5f));
	panel.setOpaque(true);
	contentPane.add(panel);

	frame.setVisible(true);

}
 
Zurück