Ajuda com jdialog atualizar jtable

8 respostas
fabiodurgante

seguinte tenho um jdialog principal q contem um jtable, e um botao atualizar, quando clico no botao atualizar faço o seguinte

Cheque c = buscaNaTabela();
        if (c != null) {
                new alterar(null, true,c).setVisible(true);
        }

para atualizar o jtabel assim

public void  listar_che() {

    List<Che> lista = CheDao.listarLISTA("");
    DefaultTableModel modelo = new javax.swing.table.DefaultTableModel(

            new Object [][] {
            },
            new String [] {
                "cod ", "Valor ", "Taxa ","Dias", "data1", "data2"
            }
        );
    tabela.setModel(modelo);

    tabela.getColumnModel().getColumn(0).setPreferredWidth(61);
   tabela.getColumnModel().getColumn(1).setPreferredWidth(65);
   tabela.getColumnModel().getColumn(2).setPreferredWidth(65);

 
    for(Ch che:lista) {
 String data = "dd/MM/yyyy", data1,data2;

SimpleDateFormat formata = new SimpleDateFormat(data);
data1 = formata.format(che.getdata_atual());
data2 = formata.format(che.getdata());


        modelo.addRow(new String[] {

             che.getid().toString(),
      che.getvalor().toString(),
            che.gettaxa().toString(),
            che.getdias().toString(),


             data2.toString(),
           data1.toString(),


        });


    }

}

pego o objeto e passo para outro jdialog alterar
abre o jdialog pego os dados tudo certo quando clico no jdialog alterar faço o seguinte

this.setVisible(false);

fecho o jdialog alterar e quero que altere o jdialog princpial q estava aberto, para alterar o jdialog presiso chama a funcao listar_che() so que nao consigo como posso fazer isso ???

8 Respostas

Ev3rton

Olá,

Quando você chama o JDialog Alterar você passa uma referência de seu JDialog Principal ou passa um JFrame?

Como está o construtor do seu JDialog Alterar?

Você poderia simplesmente passar uma referência do JDialog Princial no construtor do JDialog Alterar, então você conseguiria chamar o método listar_che() a partir desta referência.

[ ]'s

fabiodurgante

o contrutor do jdialog alterar

public alterar(java.awt.Frame parent, boolean modal, Che che,) {
       super(parent, modal);
        initComponents();

 String data = "dd/MM/yyyy";
String data1, data2,hora1;

SimpleDateFormat formata = new SimpleDateFormat(data);
data1 = formata.format(che.getdata_atual());
data2 = formata.format(che.getdata1());




   jtfdata_atual.setText(data1);
jtfdata_atual.setText(che.gettaxa_juros().toString());
jtfvalor_cheque.setText(che.getvalor_cheque().toString());

jtfdata_atual.setText(data1);
jtfvalor_devolver.setText(che.getvalor1().toString());
jtfvalor.setText(che.getvalor().toString());

jLabel2.setText(che.getid().toString());

    }
Ev3rton

Supondo que o nome do seu JDialog principal seja JDPrincipal, eu faria da seguinte maneira o JDialog Alterar:

private JDPrincipal jdPrincpal;

public alterar(java.awt.Frame parent, boolean modal, Che che, JDPrincpal jdPrincipal) {
    super(parent, modal);
    this.jdPrincipal = jdPrincipal;
    // Continuação do código do seu construtor
}

Então você conseguiria chamar o método listar_che() utilizando a referência jdPrincipal. Como você precisa que o método seja chamado ao fechar o JDialog poderia coloca-lo no evento WindowsClosing do JDialog.

Abaixo o método para configurar o evento, caso você não esteje utilizando o NetBeans

// Chame no construtor
private void configurarEvento() {
    this.addWindowListener(new WindowListener() {
        public void windowOpened(WindowEvent e) { }            
        public void windowClosed(WindowEvent e) { }
        public void windowIconified(WindowEvent e) { }
        public void windowDeiconified(WindowEvent e) { }
        public void windowActivated(WindowEvent e) { }
        public void windowDeactivated(WindowEvent e) { }            
        public void windowClosing(WindowEvent e) {
            jdPrincipal.listar_che();
        }
    });
}

[ ]'s

fabiodurgante

no botao aletrar da classe jdPrincpal pra chamar o alterar fiz assim

public jdPrincpal (java.awt.Frame parent, boolean modal) {
       super(parent, modal);
        initComponents();


                new alterar(null, true,c, jdPrincpal ,).setVisible(true);

e da erro no esquema cannot find symbol

configurarEvento() eu chamo no jprincipal ou no alterar ??

fabiodurgante

ohh se eu fizer assim no principal

this.setVisible(false);
           new alterar(null, true, c).setVisible(true);

                 }

fecho o proncipal e abro o jdialog alterar

depois quando clico em atualizar faço assim

this.setVisible(false); 
 new principal(null, true,lChe,).setVisible(true);

fecho o alterar e abro o principal novamente ai funciona certinho, porem tem que ficar fechando e abrindo queria q o principal ja ficasse aberto e o alterar por cima da janela principal

Ev3rton

Altere o construtor do JDialog Alterar:

public alterar(java.awt.Dialog parent, boolean modal, Che che) {
    // implementação 
}

Utilizando o java.awt.Dialog no lugar de java.awt.Frame vai fazer com o JDialog alterar possa ser chamado sendo um dialog do seu JDialog principal, então quando for chama-lo do JDialog principal use:

new alterar(this, true, Che).setVisible(true);
fabiodurgante

ai agradeço pela ajuda funcionou assim

coloquei no principal

private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {                                       
listar_che();

    }

ai funcionou so que o problema no jdialog tenho 3 variaveis q presiso passar para o principal como posso passar esses valores

Ev3rton

Esse principal é um JDialog certo?

Se sim e você está passando ele para o JDialog Alterar, então você pode criar métodos sets no Principal.

por exemplo:

// Em algum lugar do seu JDialog Principal
private int variavel1;
private int variavel2;
private int variavel3;

public void setVariavel1(int v1) {
    variavel1 = v1;
}
public void setVariavel2(int v2) {
    variavel2 = v2;
}
public void setVariavel3(int v3) {
    variavel3 = v3;
}

No seu JDialog Alterar você criaria uma referência para JDialog Principal, se está já está passando o JDialog Principal no construtor do JDialog Alterar pode aproveita-lo.
Assim:

private JDialogPrincipal jdPrincipal;

public JDialogAlterar(java.awt.Dialog parent, boolean modal, Che che) {
    super(parent, modal);
    jdPrincipal = (JDPrincipal) parent;
    // Implementação do construtor...
}

E quando você precisar passar as variáveis do JDialogAlterar para o principal é só usar a referência dele:

jdPrincipal.setVariavel1(123);
jdPrincipal.setVariavel2(456);
jdPrincipal.setVariavel3(789);

[ ]'s

Criado 3 de abril de 2011
Ultima resposta 3 de abr. de 2011
Respostas 8
Participantes 2