# Transparente Fenster



## legende23 (19. Jun 2009)

Ich bin am verzweifeln. Hab vor ein paar Wochen erst die Möglichkeit entdeckt swing Fenster transparent oder in anderen Formen zu schreiben. Jetzt finde ich aber nicht die Lösung, dass nur das Fenster transparent ist und nicht der Ihnhalt!
Hab hier ein Beispiel: Wie muss ich den Code verändern damit der Button nicht transparent dargestellt wird ? 


```
import java.awt.HeadlessException;

import javax.swing.JButton;
import javax.swing.JFrame;

import com.sun.awt.AWTUtilities;

public class Test extends JFrame {

	JButton test = new JButton("TestButton");

	public Test(String title) throws HeadlessException {
		super(title);
		setLayout(null);
		add(test);
		test.setBounds(130, 130, 120, 30);
	}

	public static void main(String[] args) {

		Test win = new Test("TestWin");
		win.setVisible(true);
		win.setSize(400, 400);
		win.setDefaultCloseOperation(EXIT_ON_CLOSE);
		AWTUtilities.setWindowOpacity(win, 0.5F);

	}
}
```

Die Seite How to Create Translucent and Shaped Windows hilft mir nicht so wirklich weiter

Danke im voraus


----------



## André Uhres (20. Jun 2009)

Auf der Seite, die du verlinkt hast, ist ein entsprechendes Beispiel:





Es funktioniert mit:

```
setUndecorated(true);
AWTUtilities.setWindowOpaque(this, false);
```
Den halbtransparenten Hintergrund können wir malen, indem wir paintComponent überschreiben:

```
contentPane = new JPanel() {

    private Color bg = new Color(240, 240, 240, 175);

    @Override
    protected void paintComponent(Graphics g) {
        g.setColor(bg);
        g.fillRect(0, 0, getWidth(), getHeight());
    }
};
```
Hier noch das komplette Beispiel:

```
import com.sun.awt.*;
import java.awt.*;
import javax.swing.*;

public class Test extends JFrame {

    JButton test = new JButton("TestButton");
    private JPanel contentPane;

    public Test(final String title) throws HeadlessException {
        super(title);

        setUndecorated(true);
        AWTUtilities.setWindowOpaque(this, false);
        contentPane = new JPanel() {

            private Color bg = new Color(240, 240, 240, 175);

            @Override
            protected void paintComponent(final Graphics g) {
                g.setColor(bg);
                g.fillRect(0, 0, getWidth(), getHeight());
            }
        };

        setSize(400, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        contentPane.setLayout(null);
        contentPane.add(test);
        test.setBounds(130, 130, 120, 30);
        setContentPane(contentPane);
    }

    public static void main(final String[] args) {

        Runnable gui = new Runnable() {

            public void run() {
                new Test("TestWin").setVisible(true);
            }
        };
        SwingUtilities.invokeLater(gui);
    }
}
```


----------



## legende23 (21. Jun 2009)

danke es klappt!!! :applaus:


----------

