Problema ao atualizar tabela

2 respostas
javolatra

Bom dia a todos!

É o seguinte, tenho uma tabela do tipo JTable em FormTabela, em FormTabela eu tenho um método para atualizar essa tabela atraves de outras classes.
public void atualizarTabela(){
        tabela.revalidate();
    }
essa minha tabela recebe os clientes cadastro no DB MySql. Eu tenho dois Botões onde, um é para excluir um clientes e o outro para alterar, quando é feita essa mudança (Exclusão ou Alteração), eu chamo o método atualizarTabela(), mais nada acontece, a tabela não atualiza de forma dinamica.

OBS.: No banco é feita a modificação, se eu fechar e abrir o form que tem minha tabela, a alteração é vista, mas eu quero isso de forma dinamica, sem que precise eu fechar e abrir minha tabela.

Não sei se fui claro, agradeço qualquer ajuda!

private void butao01MouseClicked(java.awt.event.MouseEvent evt) {                                     
        
        // se o butão 01 estiver habilitado
        if (butao01.isEnabled()){ // início do if 01
            table = new FormTabela(); // cria um objeto local a switch do tipo FormTabela
            
            switch (numeroDoCase){
                
                case 1: // CLIENTES
                {
//###########################  INCLUIR USUÁRIO ###########################################################
                    //se o texto do butão 01 for = INCLUÍR
                    if(butao01.getText().equals("Incluir")){
                        // todo o código para INCLUÍR o cliente no banco de dados vai aqui:
                        try{
                            conexao.pstmt = conexao.conn.prepareStatement("INSERT INTO clientes (codigo,nomeCliente) VALUES (?,?)");
                            
                            conexao.pstmt.setInt(1, Integer.parseInt(fieldCodigo.getText()));
                            conexao.pstmt.setString(2,fieldNome.getText());
                            conexao.pstmt.execute();
                            conexao.pstmt.close();
                            
                            fieldCodigo.setText("");
                            fieldNome.setText("");
                            JOptionPane.showMessageDialog(this,"Cliente Cadastrado!");
                            fieldNome.transferFocusBackward();
                            
                        }catch (SQLException ex){
                            JOptionPane.showMessageDialog(null,"Erro na SQL ao Inserir o clientes, Exeção : "+ex);
                        }
                    }// fim do if 01
                    else{
//###########################  EXCLUIR USUÁRIO ###########################################################
                        // se o texto do butão 01 for = EXCLUÍR CLIENTE
                        
                        if (butao01.getText().equals("Excluir")){
                            // todo o código para EXCLUÍR o cliente no banco de dados vai aqui:
                            try{
                                // instrunção para excluir o cliente do banco com o código retornado pelo campo codigo 
                                conexao.stmt.executeUpdate("DELETE FROM clientes WHERE codigo ="+fieldCodigo.getText());
                                JOptionPane.showMessageDialog(this,"Cliente Excluído!");
                                table.atualizarTabela();
                                
                            }catch(SQLException sqlex){
                                JOptionPane.showMessageDialog(this,"Erro na exclusão: "+sqlex);
                            }
                            
                            this.dispose(); // fecha o FormCadastro
                        }else{
//###########################  ALTERAR USUÁRIO ###########################################################
                            // se o texto do butão 01 for = ALTERAR CLIENTE
                            
                            if (butao01.getText().equals("Alterar")){
                                fieldNome.setEditable(true); // Habilita o fieldNome para mudar o nome do usuario
                                butao01.setText("Salvar"); // Muda o nomem do botão 01 para SALVAR
                            }else{
                                
                                // se o texto do butão 01 for = SALVAR CLIENTE
                                if (butao01.getText().equals("Salvar")){ // if 02
                                    // todo o código para SALVAR o cliente no banco de dados vai aqui:
                                    try{
                                        conexao.stmt.executeUpdate("UPDATE clientes SET nomeCliente = '"+fieldNome.getText()+
                                                "' WHERE codigo = "+fieldCodigo.getText());
                                        
                                        JOptionPane.showMessageDialog(this,"O Cadastro do cliente foi Alterado com sucesso!!!");
                                        fieldCodigo.setEditable(false);
                                        fieldNome.setEditable(false);
                                        butao01.setText("Alterar");
                                        table.atualizarTabela();
                                        this.dispose();
                                        
                                        
                                    }catch(SQLException ex){
                                        JOptionPane.showMessageDialog(null,"Erro na sql alterar clientes SAÍDA : "+ex);
                                    }
                                    
                                    
                                } // Fim do if 02
                            } // Fim do else 03
                        } // Fim do else 02
                    } // Fim do else 01
                    break;
                } // fim do case 01 "CLIENTES"

2 Respostas

_Renatu

Você está utilizando TableModel?
Se estiver, existem os métodos “fire…” do AbstractTableModel:

fireTableCellUpdated
fireTableChanged
etc…

tenta utilizar eles… dá uma olhada na API:

http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html

javolatra

Não, eu não estou usando um TableModel

Criado 5 de maio de 2008
Ultima resposta 5 de mai. de 2008
Respostas 2
Participantes 2