Efeito washout (bloqueio) com swing, tem como?  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

Quando vc vai desligar o computador e aparece um diloago com as opções (Windows, Gnome, Kde, no mac eu nao sei se tem)....

Ae a janela de dialogo fica normal, com cor, e a tela em segundo plano começa a ficar preto e branco... é possivel fazer algo semelhante com swing, vc abrir um dialogo e fazer o jframe do fundo preto e branco?

codifica.wordpress.com
[WWW] [MSN]
RaulCarlin
JavaEvangelist
[Avatar]

Membro desde: 20/05/2005 12:58:30
Mensagens: 389
Localização: São Paulo
Offline

É complicado, mas acho que dá...

Se você tirar um print screen da tela, utilizar Jav2D para mostrar em tela cheia e ai mostrar um JDialog na frente, acho que assim dá...

O efeito você pode utilizar o ColorConvertOp.

O print screen faça assim:



Aí você terá uma imagem do seu desktop no momento em que você quer fazer o efeito, no caso uma tela com resolução 800x600.

É interessante essa sua idéia, é que não consigo te dizer o código já de cara, mas eu iria por este caminho...
[WWW]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

entendi, não havia pensando nisso,

uma vez eu fiz algo parecido para simular uma janela transparente, eu tirava printscreen da tela, dava uma clareada na imagem para simular a transparecencia, e colocava de fundo no meu jdialog...olhando parecia realmente que era transparente a janela, mas havia alguns problemas, o jdialog precisa ser fixo na tela, pq a atualização da imagem nao tem um tempo de resposta bom, então fica dando "flick", mas foi legal até...

vou ver se dessa maneira, vai ficar legal, deopis posto o resultado aki....

codifica.wordpress.com
[WWW] [MSN]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

resolvi fazer de outra forma, não ficou exatamente como eu queria, mas ficou interessante o efeito.

criei um jpanel transparente e seto ele como glasspane, com isso posso utilizar qualquer cor para o bloqueio.

segue o código:



para utilizar em um jframe por exemplo basta fazer:


para desbloquear basta:


obs: Ele bloqueia os eventos do mouse

codifica.wordpress.com
[WWW] [MSN]
RaphaelSantos
JavaGuru

Membro desde: 05/11/2006 02:51:13
Mensagens: 201
Offline

mchiareli wrote:resolvi fazer de outra forma, não ficou exatamente como eu queria, mas ficou interessante o efeito.

criei um jpanel transparente e seto ele como glasspane, com isso posso utilizar qualquer cor para o bloqueio.

segue o código:



para utilizar em um jframe por exemplo basta fazer:


para desbloquear basta:


obs: Ele bloqueia os eventos do mouse

em que parte exatamente ficaria esse codigo?
BlockingGlassPane glass = new BlockingGlasspane();
setGlassPane(glass);
glass.setVisible(true);

no main?
RaphaelSantos
JavaGuru

Membro desde: 05/11/2006 02:51:13
Mensagens: 201
Offline

Amigo, vi seu topico sobre o BlockingGlassPane ...
achei interessante pq tava justamente querendo bloquear a tela,
o que acontece, meu programa é um programa que ler uma URL e envia por email o conteudo da mesma. por isso quando apertamos no botao envia, ele demora um pouco para enviar pq faz um processamento longo.
ai seto o
BlockingGlassPane glass = new BlockingGlasspane();
setGlassPane(glass);
glass.setVisible(true);
no inicio do actionPerformed mas ele só trava a tela no final, quando aparece a mensagem de MENSAGEM ENVIADA COM SUCESSO...
mas ele teria que travar antes justamente pro usuario nao ficar mexendo...
voce sabe o que ta acontecendo???
exemplo do meu codigo

onde o metodo enviaEmailTo() no final tem o glass.setVisible(false)...
, logo ele nao deveria travar de inicio ja que o codigo esta antes do enviaEmailTo()????
rodrigo.assumpcao
Entusiasta Java

Membro desde: 21/03/2007 01:12:40
Mensagens: 23
Offline

Não necessáriamente cara...
Se seu enviaEmailTo tiver algum processamento que faça com que o swing não faça um "refresh" ele só irá aparecer no final mesmo...

Tenta fazer o mesmo que vc fez, mas colocando um for mto (mas mto mesmo) grande ao invés do enviaEmailTo... mesmo resultado...

Porq vc não coloca o enviaEmailTo numa Thread separada??
Isso deve resolver seu problema...
RaphaelSantos
JavaGuru

Membro desde: 05/11/2006 02:51:13
Mensagens: 201
Offline

rodrigo.assumpcao wrote:Não necessáriamente cara...
Se seu enviaEmailTo tiver algum processamento que faça com que o swing não faça um "refresh" ele só irá aparecer no final mesmo...

Tenta fazer o mesmo que vc fez, mas colocando um for mto (mas mto mesmo) grande ao invés do enviaEmailTo... mesmo resultado...

Porq vc não coloca o enviaEmailTo numa Thread separada??
Isso deve resolver seu problema...

rodrigo, e como eu separaria as Threads??? no caso toda aplicação ja é uma thread ne? ou eu teria que criar 2 nesse caso??
caso seja apenas criar mais uma, onde eu criaria(em que parte do codigo)???
eu criaria usando new Thread(new Runnable() {
public void run() });
???
RafaelRio
Java Ninja
[Avatar]

Membro desde: 05/09/2006 06:52:42
Mensagens: 255
Localização: São Paulo
Offline

RaphaelSantos wrote:
rodrigo.assumpcao wrote:Não necessáriamente cara...
Se seu enviaEmailTo tiver algum processamento que faça com que o swing não faça um "refresh" ele só irá aparecer no final mesmo...

Tenta fazer o mesmo que vc fez, mas colocando um for mto (mas mto mesmo) grande ao invés do enviaEmailTo... mesmo resultado...

Porq vc não coloca o enviaEmailTo numa Thread separada??
Isso deve resolver seu problema...

rodrigo, e como eu separaria as Threads??? no caso toda aplicação ja é uma thread ne? ou eu teria que criar 2 nesse caso??
caso seja apenas criar mais uma, onde eu criaria(em que parte do codigo)???
eu criaria usando new Thread(new Runnable() {
public void run() });
???

Você pode usar a classe SwingWorker (texto sobre essa classe), ou a classe Task, do Swing App. Framework (JSR-296).

Rafael Fiume.
Yes, Nós Temos Bananas

Sun Certified Programmer for the Java Platform, Standard Edition 6
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5

Nullius in verba.
"A palavra de nenhum homem será a final."
Lema da Royal Society, associação de cientistas de Londres, em 1660. Entre os seus membros e presidentes esteve Isaac Newton.
[Email]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team