JasperViewer fica "bloqueado" por um JDialog modal

Boa Tarde a todos,

Passei a tarde pesquisando no Google, GUJ e em vários fóruns e sites da internet tentando resolver este aparentemente simples problema. Encontrei várias pessoas que postaram a mesma questão (realmente idêntica) nos mais variados fóruns que tem por aí, e como semelhança, nenhum deles obteve uma resposta satisfatória.

Então, recorro ao GUJ, quem sabe há aqui algum fera em JasperReport para ajudar.

Seguinte:
Tenho um JDialog modal que tem um botão “Print” que chama um relatório feito no JasperReport. Só que o JasperViewer simplesmente fica bloqueado atrás do JDialog e não é possível visualizá-lo enquanto o JDialog não for fechado.

Alguém já passou por algo semelhante?

Agradeço!!

Somente para constar:

:arrow: ALT + Tab e outras maneiras de alternar a janela sendo exibida não funcionaram.
:arrow: setModal(false) também não funciona.

O que funciona é no momento em que é clicado no botão “Print” dar um setVisible(false) no JDialog. Mas isto não é muito funcional. Seria funcional, quem sabe, se no momento em que fizesso o clique no botão “Print” o JDialog recebesse um setVisible(false), mas no momento em que o usuário voltasse para a aplicação o JDialog fosse setVisible(true) novamente. Mas não sei qual evento poderia utilizar para ouvir quando o usuário retorna para a aplicação.

Qualquer ajuda é bem vinda.

Obrigado.

O certo seria você dar um dispose() no seu JDialog.

Mas se eu der um dispose() o JDialog será fechado. A funcionalidade desejada é mante-lo aberto. O que eu quero é poder visualizar o JasperViewer. E em último caso, eu poderia dar um dispose(), mas teria que restaurar a visibilidade do JDialog novamente depois.

Thanks…

Se não me engano o JasperViewer é um JFrame, se eu estiver correto você pode estendê-lo e implementar WindowListener, e no evento onClosing() chamar o JDialog, vê se isto é possível.

Abraço…

Na verdade eu to fazendo a maior gambiarra aqui.

Hoje pela manhã eu fiz um novo JDialog e copiei todo o conteúdo (getContentPane()) do JasperViewer para o JDialog. Até que ficou bom, mas não fiquei satisfeito com a solução, pois entre outras coisas, o JDialog não oferece os botões da Barra de Título. E conhecendo a nossa equipe de testes, resolvi buscar outra alternativa.

Agora a tarde pensei na solução que você acabou de sugerir de utilizar WindowListener. Mas está dando uma trabalheira, pois tenho que implementar todos os métodos, tanto para o JasperViewer quanto para o meu JDialog, ainda preciso prestar muita atenção em qualquer mínima ação realizada em ambas janelas, como: ativado, desativado, fechado, fechando, aberto, minimizado, restaurado para saber qual exibir e qual ocultar na hora correta.

Eles tem que trabalhar em total sintonia. Mas esta solução está ficando boa, estou quase finalizando.

Obrigado pela ajuda…

Falow Gremista…existem muitas vagas pra desenvolvedor ai em Campinas? Qualquer coisa dá um toque…

Eheh, falow!!

Existe bastante coisa sim. Tem algumas boas e grandes empresas para se trabalhar aqui, várias multinacionais. Se tiver afim, posso te passar semanalmente o boletim do RH do qual sou terceirizado onde eles divulgam todas as vagas de TI abertas.

Se tiver interessado, posso te encaminhar. Hoje mesmo eu recebi o desta semana.

Valeu…

Opa manda como mensagem privada…