Tratamento de Eventos

2 respostas
R

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.

2 Respostas

71C4700

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 !

R

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:

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);
			}
		});
	}

}

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.

Criado 18 de agosto de 2008
Ultima resposta 18 de ago. de 2008
Respostas 2
Participantes 2