InternalFrames

3 respostas
K

Os tópicos que encontrei sobre este assunto não me esclareceram bem.
Qual a técnica mais usada para evitar de instanciar duas vezes a mesma classe JInternalFrame, e consequentemente, abrir duas janelas de uma mesma rotina ?
Tenho um cadastro de clientes aberto e quero evitar que o usuário acesse os menus e chame esta janela novamente !

Kebe

3 Respostas

kuchma

Kebe:
Os tópicos que encontrei sobre este assunto não me esclareceram bem.
Qual a técnica mais usada para evitar de instanciar duas vezes a mesma classe JInternalFrame, e consequentemente, abrir duas janelas de uma mesma rotina ?
Tenho um cadastro de clientes aberto e quero evitar que o usuário acesse os menus e chame esta janela novamente !

Oi,

Voce precisa definir melhor o escopo do teu problema ou detalha-lo com mais exatidao aqui no post… olha soh:

  • “instanciar duas vezes a mesma classe JInternalFrame”: crie tua classe herdando de JInternalFrame e use o pattern Singleton (se voce nao souber o que eh isso, pergunte).

  • “evitar […] abrir duas janelas de uma mesma rotina”: aqui entendo que voce nao quer abrir janelas “duplicadas” digamos assim, certo? Nesse caso voce pode criar dois metodos centrais para abrir e fechar com uma especie de “cache” para os frames. No “abrir” voce verifica se o frame ja esta em “cache”. Se nao estiver, abre e poe em cache. Se estiver, apenas restaura o que ja estiver aberto. No metodo “fechar” voce remove o frame do “cache”.

  • “quero evitar que o usuário acesse os menus e chame esta janela novamente”: se voce quer fazer esse controle no proprio menu, tera que desabilitar o item de menu correspondente no momento em que voce abrir o frame.

Se voce detalhar melhor quais dos tres caminhos voce quer seguir podemos aprofundar a discussao. :slight_smile:

Marcio Kuchma

K

Obrigado pelas dica amigo…

Vou me interar mais do Pattern singleton… acho que é a melhor saída !

Abraço

Kebe

K

Acho que encontramos uma maneira interessante de gerenciar Janelas do tipo InternalFrame.
Usamos o Pattern Singleton na construção desta classe, e no evento que chama esta janela utilizamos o método isVisible() pra ver se ela já está ativa ou não. Só temos que ter o cuidado de configurar para usar o “dispose” no momento de fechar esta janela.
Funcionou 100% e sem se utilizar de classes auxiliares ou gambiarras que até funcionam, mas deixam nós programadores meio frustrados !!!

Um abraço a todos :slight_smile:

Kebe

Criado 5 de setembro de 2006
Ultima resposta 7 de set. de 2006
Respostas 3
Participantes 2