Pessoal estou com o seguinte prolema, tenho um JFrame com menus que quando acionados chamo algumas Internal frame, quando clico mais de uma vez no mesmo menu ele chama á mesma internal frame deixando disponível no frame duas (ou tantas vezes q eu clicar no menu) de internal frame . Como faço pra aparecer somente uma :?:.
Instancia ela só uma vez, no menu só dá setVisible() e põe defaultCloseAction como HIDE
R
RicardoLuis
De uma pesquisada no padrão Singleton. Com ele, sua classe terá apenas uma instância em toda a aplicação, desta forma você consegue efetuar o controle desejado.
Qualquer dúvida é só perguntar…
Espero ter ajudado.
V
vnsnunes
Ricado deu uma olhada no padrão Singleton e realmente eh mt bom sendo q tenho q ter tempo pra poder compreendê-lo melhor e passaaaar a utilizá-lo… mas como tô atrasado com o projeto queria algo mais próximo que o transvaal falou soh que ele não especificou onde fazer o q ele sugeriu, ficou meio vago!
Vc tem uma outra idéia :?: nem q seja um gatilho pra eu poder me adiantar :?:.
abços
obs: tenho 3 classes, a main como JFrame e duas JInternal frames que chamo quando aciono os submenus.
R
RicardoLuis
Você pode fazer o seguinte: quando você chamar o JInternalFrame você verifica se ele está visível, utilizando o método setVisible(), caso seja verdadeiro você não abre o JInternalFrame, somente o torna selecionado. Caso o setVisible() seja false você manda abrir o JInternalFrame.
Esta é uma solução mais simples. Porém quando você tiver um pouco mais de tempo aconselho você a utilizar o padrão singleton, desta forma seu código se tornará mais simples e legível.
Espero ter ajudado.
sapanjos
Estou com o mesmo problema…
Até consigo impedir de abrir mais de uma janela, porém qdo eu fecho o jInternalFrame e vou no menu tentar abrir de novo ele não abre.
Olá pessoal, Ricardo fiz dessa forma que vc falou e não abre várias instâncias, agora ele abre somente uma vez(somente) cada internal frame, quando vou tentar abrir ela novamente não vai…
Pq :?:
[]´s
Obs: segue o código para análise.
R
RicardoLuis
Estranho, aqui funcionou sem problemas.
Estou utilizando aqui o JDK 1.4.2_06.
Que erro que ele gera?
rissato
Aconteceu isso comigo uma vez. Eu custei descobrir, e quando fui ver, tinha um erro de lógica no programa que estava fazendo eu chamar addActionListener() duas vezes nos ítens do menu. Talvez é isso que está acontecendo com vc tb.