Como criar uma janela(JFrame) "intocável"?

Oi gente, meu problema é o seguinte, eu tava querendo criar uma janela que fosse apenas visível, mas que todos os eventos fossem capturados no componente de trás…
Eu sei, tá uma enrolaçada, mas é esse o pior problema: Eu não sei o que pesquisar pra encontrar isso.

Um exemplo pratico são aquelas notificações do Ubuntu:
http://sohminha.orgfree.com/images/Captura_de_tela.png
http://sohminha.orgfree.com/images/Captura_de_tela-1.png
http://sohminha.orgfree.com/images/Captura_de_tela-2.png

Como nos prints acima, mesmo com a notificação na frente, eu selecionei o texto na barra de endereço…
Será que tem como fazer isso no Java?

Desde já, agradecido… :slight_smile:

Pode começar por aqui. Talvez te ajude.
http://www.guj.com.br/java/37746-nao-exibir-as-bordas-e-barra-de-titulo-de-um-frame

Vlw a dica cara!
Tipo, pra fazer a janela, a transparência, ou as bordas, tudo bem, mas o problema mesmo é tirar essa “solides”, ou seja, dizer pro mouse que ela não exite…
Mas valeu mesmo a dica cara! :smiley:

Nao sei exatamente o que vc quis dizer com “tirar essa sodides”, mas pode tirar a habilidade do frame de ser focável (setFocusable(false)), ou procurar outra propriedade que o valha. Nunca fiz nada do tipo, mas parece interessante.

É assim, o que eu quero fazer é uma espécie de “holograma”.
Uma janela que seja exibida, mas que não seja “sentida”, de forma que o mouse quando clique encima dela, acabe clicando no que tá atrás dela, como na terceira imagem, onde eu selecionei o texto, mesmo com aquela pop-up na frente… entende?
Uma notificação que não atrapalhe na tela…

Ahhhh… Boa sorte!
Quanto tiver a solução posta ai, pq eu nao faço ideia kkk

Pode dexar! :slight_smile:

Veja se isso ajuda:

[code]import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class TesteOverlay {

/**
 * @param args
 */
public static void main(String[] args) {
	new TesteOverlay().teste();
}

private void teste() {
	JFrame frame = new JFrame("Overlay");
	JButton botao = new JButton("Teste");
	frame.add(botao);
	frame.setSize(640, 480);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
	frame.setGlassPane(new Overlay());
	botao.setAction(new ShowOverlay());
}

class ShowOverlay extends AbstractAction {
	private static final long serialVersionUID = 1817243571776498418L;

	public ShowOverlay() {
		putValue(NAME, "Teste");
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		JButton botao = (JButton) e.getSource();
		JFrame theFrame = (JFrame) botao.getTopLevelAncestor();
		Overlay overlay = (Overlay) theFrame.getGlassPane();
		overlay.mostra("Apertou", 1);
	}
	
}

class Overlay extends JComponent implements Runnable {
	private static final long serialVersionUID = 8906385904245788553L;

	String texto = "";
	Long fim = 0L;
	Thread thread;
	
	public void mostra(String string, int i) {
		texto = string;
		synchronized (fim) {
			fim = System.currentTimeMillis() + (i * 1000);
		}
		setVisible(true);
		if (thread == null) {
			thread = new Thread(this);
			thread.start();
		}
	}
	
    public void paint(Graphics g) {
        g.setColor(Color.red);
        g.drawString(texto, 10, 20);
    }

	@Override
	public void run() {
		synchronized (fim) {
			while(System.currentTimeMillis() < fim) {
				Thread.yield();
			}
			setVisible(false);
			thread = null;
		}
	}
}

}
[/code]

Isso vai me servir pra outro projeto, mas nesse caso, o que eu procuro é fazer uma janela “fantasma”, um holograma, onde eu clico nela e o mouse clique no que esta atrás, como se ela não estivesse ali.
Mas vlw pela ajuda cara! Isso vai me servir pra uma notificação que eu tava precisando fazer!
Valeu!