Galera tô com uma duvida, mais acho que seja simples de resolver. Tô desenvolvendo um protótipo simples no ECLIPSE e tenho duas telas (JFrame) a primeira tenho 4 botões, ao clicar em um dos 4 aparecerá uma nova janela, então é aí que surgiu a duvida, preciso que o operador só consiga mexer na primeira janela se a segunda estiver fechada.
Quero que a segunda janela fique por cima da primeira de modo que eu não consiga clicar em nada da janela que tá atrás (primeira), só irei conseguir clicar em alguma coisa da primeira janela se a segunda janela estiver fechada.
makecio
na hora que vc chamar a nova janela (JFrame) voce da um this.setEnabled(false) na class anterior.
Eu acho que você está falando em um JDialog. Uma janela modal.
Você tem uma janela principal com 4 botões, onde cada um abre uma nova janela, certo? Você quer que o usuário só possa operar a janela principal quando ele fechar a janela secundária aberta, certo? Se for, então você vai criar a janela principal usando JFrame e as secundárias usando JDialog e tornado-as modais.
Na hora de abrir, passe a principal como pai da secundária. Isso evita comportamento inconsistente no "alt+tab".
Entao era por isso que minha tela nao funcionava direito!
O post nao e meu, mais muito obrigado mesmo!
:)
ViniGodoy
beowulf:
Entao era por isso que minha tela nao funcionava direito!
O post nao e meu, mais muito obrigado mesmo!
A mesma observação vale para JOptionPanes. Vejo muita gente aqui no GUJ passando “null” no primeiro parâmetro, uma prática completamente errada.
gertmuller
Mas ViniGodoy,
tirando uma dúvida: mesmo sabendo que a prática pode ser considerada errada, se for o JFrame que instanciar e exibir o JDialog, o mesmo não saberá que foi o JFrame que o chamou? Qual o intuito de informar o pai ao JDialog se todas as outras janelas ficam desativadas durante a exibição do JDialog?
[]'s e obrigado.
ViniGodoy
Não sabe. O JDialog não tem como detectar onde ocorreu a sua instanciação. Por isso é necessário passar o JFrame como parâmetro.
A utilidade é que se o usuário fizer um ALT+TAB para cima do JFrame, o JFrame é capaz de tornar a dialog visível imediatamente. Sem o parâmetro, o que ocorre é que o JFrame fica visível, inacessível, e a dialog escondida atrás dele.
gertmuller
Muito interessante…
Pensei que isso fosse um problema inerente a janelas modais. Solucionei mais um problema q tinha em minhas aplicações.
Valeu!