Quem chamou esse JDIALOG?

8 respostas
R

Olá galerinha, to iniciando no java, dei uma pesquisada antes mais não consegui achar o que eu precisava…

1 Um JDialog “BUSCA” vai ser chamado por varios JDialog ,cada um destes que vai chamar, vai ter um botão que ao clicar abre o “BUSCA”.

2 Quando este BUSCA fechar ele vai devolver um valor para quem chamou.

3 Tem Como saber quem chamou para devolver o valor para este, de forma dinâmica?

abçs

8 Respostas

Jonas_B_a_r_r_o_s

Coloque metodos toString(), em todos os JDialog’s.

@Override
public String toString() {
    return "ClasseA ";
}

@Override
public String toString() {
    return "ClasseB ";
}

em Busca, no metodo do botao

No actionPerformed() { 
   //Voce coloca para fechar o BUSCA.dispose();
   ///Abrir o JDialog que voce queira, exemplo Classe A
   a new ClasseA
  JOptionPane a.toString(), busca chamou ClasseA
        
}

E assim pode repetir esse metodo para os demais JD, mas talvez seja ao contrario do que fiz

R

Olá Jonas, obrigado pela explicação… mas continuo com a dúvida, sabe estando no Busca:JDialog eu consigo saber quem a instanciou?
Ex: tenho vários jDialog que pretendo que chame essa classe e depois retorne um valor, mas uma vez aberto Busca:JDialog , tem como saber qual classe instanciou ela?

Cliente:JDialog

private void jbBuscarActionPerformed(java.awt.event.ActionEvent evt) {
    Busca formBus =   new Busca(null, true);

    formBus.setVisible(true);        
}

Reservas:JDialog

private void jbBuscarActionPerformed(java.awt.event.ActionEvent evt){     
    Busca formBus =  new Busca(null, true);
    formBus.setVisible(true);        
}
D

Olá

private void jbBuscarActionPerformed(java.awt.event.ActionEvent evt) {
    final Busca formBus =  formBus = new Busca(null, true);
    formBus.getBotao().addActionListener(new ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            setValor(formBus.getValor());
        }
    });
    formBus.setVisible(true);
}

private void setValor(Object valor) {
    System.out.println(valor);
}
R

Diego dessa forma acredito que de certo, pois faria tudo no JDialog que chamou o Busca:jDialog.

Mais ainda gostaria de saber se tem no Busca:JDialog como pegar informação de quem instanciou/chamou ele? Sabe se esse objeto tem informação de quem ele foi chamado?

D

A forma mais simples

final Busca formBus = new Busca(null, true);
formBus.foiInstanciadoPor(this);
R

ok diego. como escreveria o método foiInstanciadoPor, poderia me dar uma ideia?

D
private JDialog instanciadoPor;

public void foiInstanciadoPor(JDialog dialog) {
    instanciadoPor = dialog;
}
V

Crie o Objeto JDialog no construtor do seu JDialog lista e assim e passe ele por parametro, tela a outra tela na sua lista

public JDialogLista(JDialog meChamou){
     this.meChamou = meChamou;
}

public void abreLista(){
    JDialogLista lista = new JDialogLista(this);
    lista.setVisible(true);
}
Criado 19 de junho de 2016
Ultima resposta 5 de jul. de 2016
Respostas 8
Participantes 4