Deixar Frame Transparente

Olá pessoal,

Dando uma olhada no GUJ, percebi que existem vários tópicos ensinando a deixar o Frame transparente, por diversos métodos diferentes…
Até que me deparei com este:

que me chamou bastante atenção pela simplicidade.

Só que este método deixa todos os componetes transparentes também e eu estava procurando algo que ficasse como este:
http://sohminha.orgfree.com/images/JFrameTrasnparente.png

onde os componentes ficam totalmente vísiveis…

Tem como deixá-lo assim?

Eu peguei daqui: http://www.guj.com.br/java/260928-jframe-transparente-e-jpanel-normal
mas não entendi muito bem o código, além de ter dado vários erros aqui.

Alguém pode me ajudar ??

Posta um exemplo com este método, pois não consegui implementá-lo em um projeto.

Grato.

Fiz esse exemplo na carreira, só para fins de demonstração.

Ok…então lá vai:

[code]package interfaces;

import com.sun.awt.AWTUtilities;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JRootPane;

public class teste extends JFrame {

private JButton fechar, mostrar;
private boolean x;

public teste() {
    final Container tela = getContentPane();
    tela.setLayout(null);
    this.setResizable(false);
    this.setTitle("Teste");
    this.setBounds(0, 0, 400, 400);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.getContentPane().setLayout(null);
    this.setUndecorated(true);
    this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
    this.setLocationRelativeTo(null);

    fechar = new JButton();
    fechar.setOpaque(false);
    fechar.setBounds(0, 0, 200, 200);
    fechar.setText("Fechar");
    fechar.setFont(new Font("Arial", Font.BOLD, 12));
    fechar.setBackground(new Color(190, 190, 190));
    this.add(fechar);

    mostrar = new JButton();
    mostrar.setOpaque(false);
    mostrar.setBounds(200, 0, 200, 200);
    mostrar.setText("Ocultar");
    mostrar.setFont(new Font("Arial", Font.BOLD, 12));
    mostrar.setBackground(new Color(190, 190, 190));
    this.add(mostrar);


    mostrar.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            mostrar();
        }
    });
    fechar.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            fechar();
        }
    });

}

public void fechar() {
    System.exit(0);
}

public void mostrar() {

    if (x == false) {
        AWTUtilities.setWindowOpacity(this, 1f);//Deixa 100% visível
        mostrar.setText("Ocultar");
        x = true;
    } else {
        AWTUtilities.setWindowOpacity(this, 0.5f);   //deixa 50% transparente
        //AWTUtilities.setWindowOpacity(this, 0.01f);// Deixa 99% transparente
        mostrar.setText("Mostrar");
        x = false;
    }
}

}[/code]
Observem que quando aperto ocultar, ele oculta tudo !

Mesmo que eu coloque:

Ele aplica o efeito nos botões também.

Quero que ele aplique o efeito só no JFrame
Tenho certeza que é uma coisa bem simples, só que eu não sei…

Talvez use umas duas ou três linhas para fazer isso só no JFrame

E Então?

Muito bom o exemplo Avelino7, grato pela postagem e poder ajudar ainda mais os usuários desta comunidade. Até mais.

Vlw :smiley: , mas esse funcionalidade eu retirei de um outro código daqui o GUJ, eu só adaptei para um exemplo mais simples.

Você viu o outro jeito? Esse ai só ajusta a transparência e aplica para todos os componentes da Janela…Eu queria um que ocultasse só o Panel, mas que os componentes como os botões, ainda continuassem visíveis…:frowning: