Problema com DesktopPane e JInternalFrame

3 respostas
aoshi

Olá, estou com um probleminha, tenho um JDesktopPane e nele eu abro minhas JInternalFrames e ai está o problema, quero verificar se meu objeto “está ativo” no Desktop quando eu clico no menu para abrir ele. Caso esteja não abrir mais uma JInternalFrame por ex.“Clico em Cadastrar cliente, se eu tentar abrir outro Cadastrar Cliente, checar se já existe um objeto CadastrarClietne e então não abri-lo até que eu o feche”.
Pensei em usar um vetor, e sempre que for criar o objeto ele verificar dentro dele, se já existir não cria o objeto, caso não exista então cria o objeto e adiciona ao vetor, assim que fechar a janela, remover o objeto do vetor e assim por diante.

Se alguma puder me ajudar fico grato. :lol:

3 Respostas

Zeed01

Boa tarde colegas !

aoshi:

Qual o problema com essa opção que você citou ?
Bom… foi mais ou menos o que eu implementei, embora não para controlar se a tela já esta aberta.
Só que eu usei um ArrayList:

private static ArrayList <JInternalFrame> telasAbertas = telasAbertas = new ArrayList <JInternalFrame>();

Apenas, como pode ver, usei uma variavel estática.

[]s

G

Atualmente estou usando assim:

public void abrirTela(Class classe) {
        
        //Verificando se o usuário tem permissão para abrir esta tela.
        /*if (!AlgumaCoisa.isAutorizado(nomeClasse)) {
            return;
        }*/
        
        //Verificando se a janela está aberta.
        for (int i = 0; i &lt this.dpJanelas.getAllFrames().length; i++) {
            if (this.dpJanelas.getAllFrames()[i].getClass().getName().equals(
                    classe.getName() )) {
                this.dpJanelas.getAllFrames()[i].toFront();               
                return;
            }
        }
        JInternalFrame iFrame;
        try {
            iFrame = ((JInternalFrame) classe.newInstance());
            this.dpJanelas.add(iFrame);
            iFrame.show();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        }       
    }
aoshi

Valeu… vou testar essas formas …
muito obrigado.

Criado 17 de setembro de 2007
Ultima resposta 17 de set. de 2007
Respostas 3
Participantes 3