JInternal Frame abrindo mais de uma vez

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 :?:.

obrigado.

Instancia ela só uma vez, no menu só dá setVisible() e põe defaultCloseAction como HIDE

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.

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.

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.

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.

Preciso de ajuda urgente… :?:

Segue abaixo código:

if (frmCancelarVenda==null){
frmCancelarVenda = new FrmCancelarVenda();
desktop.add(frmCancelarVenda);
}
frmCancelarVenda.setVisible(true);
try {
frmCancelarVenda.setSelected(true);
} catch (Exception e){}

Abraços.

Faça da seguinte forma e veja se funciona:

if (frmCancelarVenda==null) {
    frmCancelarVenda = new FrmCancelarVenda();
    desktop.add(frmCancelarVenda);
}

desktop.add(frmCancelarVenda);
frmCancelarVenda.setVisible(true);
try {
    frmCancelarVenda.setSelected(true);
} catch (Exception e){}

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.

Estranho, aqui funcionou sem problemas.
Estou utilizando aqui o JDK 1.4.2_06.

Que erro que ele gera?

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.

Rissato, estou fazendo assim nos sub menus:

   submenuDef.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent e) {
    criaFrameDef();
        }
    });

Ricardo, aki eu não tenho como reproduzir esse erro só em casa… estou usando NetBeans 5.0 e JDK 1.5.06

[]´s