Verificar se InternalFrame foi criada

1 resposta
B

Fala gente boa!

Bom, desenvolvendo meu projeto final surgiu uma dúvida em uma verificação
que não faço ideia de como faço.
Vi em uma vídeo aula um moço criando um InternalFrame dentro de um DesktopPane
e deu certo a criação e a destruição :lol: também.
Só tem um detalhe: Como faço pra testar se a tela já existe? Não consegui pensar em
nenhuma forma!
Não faço ideia de como testar e o que testar.
Alguém pode me ajudar?

private void smCadFuncioActionPerformed(java.awt.event.ActionEvent evt) {                                            
            FCadFun n = new FCadFun();
            this.painelPrincipal.add(n);
            n.show();        
    }

Se não for pedir muito, como estou começando agora, poste pra mim explicadinho
com comentários ao lado. :oops:

Valeu galera!!!

1 Resposta

SandroSoftwares

brunokchimbo, pode verificar assim:

numa classe verifica se está aberto:

public class VerificaInternalFramesAbertos{
       
     public VerificaInternalFramesAbertos() {
     }

     /**
      * Método que faz a verificação
      * @param jDesktopPane jDesktopPane da aplicação
      * @param frame Frame a ser verificado
      * @return valor True se o Frame estiver instanciado
      */
     public static Boolean verifica(JDesktopPane jDesktopPane,JInternalFrame internalFrame) { //construtor recebe o JDesktopPane e o JInternalFrame que deseja verififcar
         Boolean valor = false;
         JInternalFrame[] results;
         results = jDesktopPane.getAllFrames(); // Retorna todos os internalFrames em um vetor
         for (int i = 0 ; i < results.length ; i++){
            if( results[i].equals(internalFrame) ){  //se o internalFrame pesquisado estiver na tela, retornar true
               valor = true;
               break;
            }
        }
     return valor;
    }

}

e dentro do menu de escolha pra nascer o jInternal frame (no meu caso estou abrindo o JInternalFrameEstados) coloco no actionperformed:

private void jMenuItemCadastroEstadosActionPerformed(java.awt.event.ActionEvent evt) {                                                         

        //se o evento capturado for uma chamada vinda do item Cadastro de Estados do menu...
        if (evt.getSource() == jMenuItemCadastroEstados) {

            //se for verdadeiro está ativo!

            if (VerificaInternalFramesAbertos.verifica(jDesktopPane1, jInternalFrameEstados)) {
                //independente da tela estar visível ou não, a tela é movida para frente
                jDesktopPane1.moveToFront(jInternalFrameEstados);
                try {
                    jInternalFrameEstados.setSelected(true);
                } catch (PropertyVetoException ex) {
                }
            } else {
                //instancia a tela de cadastro de Estados
                jInternalFrameEstados = new JInternalFrameEstados();
                //adiciona ao jDesktopPane
                jDesktopPane1.add(jInternalFrameEstados);
                //comando internos do Cadastro de Estados
                jInternalFrameEstados.setVisible(true);
                jInternalFrameEstados.setPosicao();
                jInternalFrameEstados.desabilita();
                jInternalFrameEstados.atualizacao();
            }
        }



    }

Espero que sirva!

Criado 23 de setembro de 2012
Ultima resposta 23 de set. de 2012
Respostas 1
Participantes 2