Boa tarde, estou com um problema e queria saber se seria possivel solucioná-lo com o swing.
A situação é a seguinte:
Tenho um jFrame que ira renderizar uma imagem, e esse jFrame está translúcido, de forma a ver as aplicações rodando atrás dele.
O que eu pretendo fazer é torná-lo sempre visível (“Always on Top”) e, quando clicar sobre ele,os eventos do mouse sejam recebidos pela janela que está diretamente atrás do jFrame.
Resumindo, minha aplicação Java é apenas uma Máscara, e nao deve responder a nenhum evento, os quais devem ser repassados para a tela que esteja diretamente abaixo da minha aplicação.
Não sei se o Swing permite isso, talvez vocês tenham alguma idéia para solucionar isso…
grato!
Reinaldo.
não entendi bem sua duvida !
Seu Frame é translucido, Como assim ?
Que tipo de eventos queria que seu Frame tivesse ?
Talvez parte do codigo pra ajudar, sei uma boa !
Ok, o código eu nao tenho como disponibilizar agora, visto que está em outro computador, mas a idéia é a seguinte,
no Java 6 foi implementada uma forma de deixar os jPanels transparentes, utilizando a classe AWTUtils.
Aqui vai um código de exemplo:
[code]import java.awt.*;
import javax.swing.*;
public class TranslucentWindow extends JFrame {
public TranslucentWindow() {
super(“Test translucent window”);
this.setLayout(new FlowLayout());
this.add(new JButton(“test”));
this.add(new JCheckBox(“test”));
this.add(new JRadioButton(“test”));
this.add(new JProgressBar(0, 100));
this.setSize(new Dimension(400, 300));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Window w = new TranslucentWindow();
w.setVisible(true);
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.5f);
}
});
}
}[/code]
isso vai gerar uma janela com 50% de transparencia. o que eu quero é que essa janela “Ignore” os eventos de mouse (onClick() principalmente) e que a janela que esteja abaixo interprete esses comandos.