JFrame para JInternalFrame

2 respostas Resolvido
java
A

Pessoal, bom dia!

Sou iniciante em Java e estou com o seguinte problema. Estou desenvolvendo um software, onde tenho uma tela principal e utilizo JInternalFrame na mesma. Tenho uma seção nessa tela principal de agendamento de cliente, aonde ao clicar em pesquisar, ele me abre uma JFrame externa para encontrar o cliente. Após encontrar o cliente na tabela e clicar duas vezes na linha do mesmo, gostaria de retornar ao JInternalFrame já aberto essas informações. O único problema que estou tendo é passar essa informação para esse JInternalFrame já aberto. Segue imagem do software para entenderem melhor.

2 Respostas

V
Solucao aceita

Ao invés do JFrame, o ideal seria usar um JDialog modal (que não permite ser fechado até que a operação termine).

A vantagem desse tipo de dialog é que o método show “trava” até que a janela seja fechada. Assim, você pode simplesmente ler os dados da janela após isso ocorrer, algo como:

suaJanela.setVisible(true); //O JDialog pausará aqui
Cliente c = suaJanela.getCliente();

Lógico que vc terá que criar na classe da janela o método getCliente() que retorna o cliente escolhido.

Se você realmente precisar fazer com JFrame, o caminho é mais tortuoso. Você deve passar o JInternalFrame como parâmetro para o JFrame.

public class MinhaJanela extends JFrame {
    SuaInternalFrame owner;
    public MinhaJanela(SuaInternalFrame owner) {
        super(); 
        this.owner = owner;
    }
    //Resto do código aqui
}

E aí vc pode incluir uma chamada a um dos métodos do JInternalFrame quando o JFrame fechar:

void onMinhaJanelaCloseOk() {
       owner.setCliente(getCliente());
       setVisible(false);
}

Claro que aí vc também tem que criar o método setCliente na sua JInternalFrame

A

@ViniGodoy finalmente consegui fazer o que precisava, sua postagem clareou bastante. Coloquei um JDialog na minha JInternalFrame, depois apenas passei os dados da tabela para os campos.

Criado 27 de maio de 2019
Ultima resposta 31 de mai. de 2019
Respostas 2
Participantes 2