[RESOLVIDO]Abrir JinternalFrame a partir de JDialog

1 resposta
M

Boa Tarde Galera, sou iniciante em java e tenho essa duvida..
possuo um JFrame principal q nela abro JInternalFrames da seguinte maneira:

public void AbrirAtendimento(String numero) {
        if (numero == null) {
            System.out.println("Cancelou");
        } else if (numero.equals("")) {
            System.out.println("Vazio");
        } else {
            this.addTelaDesk(new Atendimento(numero));
        }
    }
public void addTelaDesk(JInternalFrame tela) {
        for (JInternalFrame jInternalFrame : this.desktop.getAllFrames()) {
            // se uma janela semelhante estiver aberta
            if (jInternalFrame.getClass().toString().equalsIgnoreCase(tela.getClass().toString())) {
                jInternalFrame.moveToFront(); // traz janela para frente para facilitar a escolha

                Object[] opções = {"Utilizar Aberta", "Abrir Nova"};
                int qst = JOptionPane.showOptionDialog(null, "Abrir uma nova janela ou utilizar a que ja esta aberta?",
                        "Janela duplicada",
                        JOptionPane.DEFAULT_OPTION,
                        JOptionPane.QUESTION_MESSAGE,
                        null,
                        opções,
                        opções[0]
                );
                // se utilizar a aberta retorna e não abre outra,
                // caso contrário sai do for e abre outra igual
                if (qst == 0) {
                    jInternalFrame.dispose(); //fecha janela aberta
                    this.desktop.add(tela); //adiciona na tela
                    tela.setVisible(true); // seta visivel
                    return;
                } else if (qst == 1) {
                    break;
                }
            }
        }

        this.desktop.add(tela); //adiciona na tela
        tela.setVisible(true); // seta visivel
        this.cascade(); //coloca em cascata para deixar "pratico"
    }

    private void cascade() {
        JDesktopPane desk = this.desktop; // JDesktopPane
        int separation = 25; // distancia entre as janelas

        // Pega todos os frames e organiza, o ultimo fica mais em baido e mais pra cima
        int i = desk.getAllFrames().length; // quantidade de frames
        for (JInternalFrame f : desk.getAllFrames()) {
            f.setLocation(i * separation, i * separation);
            i--; //mutiplicador
        }
    }

E em certo momento da aplicação abre um JDialog que eu gostaria que executasse esse metodo na classe principal, estou fazendo da seguinte maneira, mais da erro:

public static Principal principal;

    public void AbrirAtendimento2(String numero) {
        principal.AbrirAtendimento(numero);
        dispose();
    }

Por um evento na própria classe principal ele funciona normalmente, mais se vor tentar abrir o JInternalFrame pelo JDialog usando o codigo acima nao funciona.
agradeço
vlw

1 Resposta

M

Galera pesquisando aqui consegui resolver minha duvida com o Video Abaixo.

[youtube]https://www.youtube.com/watch?v=g6OqIK5mlcc[/youtube]

Obrigado Alex Pereira pelo video e parabens pelas aulas.

Criado 25 de outubro de 2014
Ultima resposta 27 de out. de 2014
Respostas 1
Participantes 1