Atualizar JTable após inserção de registro no bd

0 respostas
kesselring

Boa tarde;

Eu vi em vários fóruns de como fazer isto, porém não consegui fazer. No meu projeto eu tenho uma classe ModeloUsuario que extende AbstractTableModel. ( A seguir)
package br.com.ufac.lpp.barionix.modelosTabelas;

import br.com.ufac.lpp.barionix.entidades.Usuario;
import br.com.ufac.lpp.barionix.logica.UsuarioLogica;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
  
public class ModeloUsuario extends AbstractTableModel {  
  
  
  
    /* Lista de Usuários que representam as linhas. */  
    private List<Usuario> linhas;  
  
    /* Array de Strings com o nome das colunas. */  
    private String[] colunas = new String[]{  
        "Login","Usuário", "Senha", "Nível de Acesso"};  
  
 
  
    /* Cria um ClienteTableModel carregado com 
     * a lista de Cliente especificada. */  
    public ModeloUsuario() {
        UsuarioLogica userLog = new UsuarioLogica();
      
        linhas = new ArrayList<>(userLog.listarUsuario());  
      
    }  
  
  
    /* Retorna a quantidade de colunas. */  
    @Override  
    public int getColumnCount() {  
        
        return colunas.length;  
    }  
  
    /* Retorna a quantidade de linhas. */  
    @Override  
    public int getRowCount() {  
        
        return linhas.size();  
    }  
  

    @Override  
    public String getColumnName(int columnIndex) {  
        
        return colunas[columnIndex];  
    }  
  
    @Override  
    public Object getValueAt(int rowIndex, int columnIndex) {  
         
            Usuario usuario = linhas.get(rowIndex);
            String[] linhaRetornada ={String.valueOf(usuario.getCpf()), usuario.getNome(), usuario.getSenha(), String.valueOf(usuario.getNivelAcesso())};
          
            return linhaRetornada[columnIndex];
    }
      
    public void atualizar(Usuario usuario) {
  
        linhas.add(usuario);
        int indice = getRowCount()-1;
       fireTableRowsInserted(indice, indice);
    } 
    
    
}
Como pode ver ai, eu tenho o método de atualizar, porém não surte efeito. Na camada de visão eu tenho
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ufac.lpp.barionix.visao;


import br.com.ufac.lpp.barionix.excecoes.UsuarioEXCECAO;
import br.com.ufac.lpp.barionix.logica.UsuarioLogica;
import br.com.ufac.lpp.barionix.modelosTabelas.ModeloUsuario;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;


/**
 *
 * @author Albert
 */
public class PainelUsuario extends JPanel{
    TratamentoEvento te = new TratamentoEvento();
    
    
    
    private  JPanel painelUsuario = new JPanel(new BorderLayout());
    private JPanel painelSuperior = new JPanel(new GridLayout(1, 1));
    private JPanel painelInferior = new JPanel();


   
    private JTable tabelaUsuario = new JTable();
    private JScrollPane barraRolagem = new JScrollPane(tabelaUsuario, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    
   
    
    private JButton botaoCadastrar = new JButton("Cadastrar",(Icon)new ImageIcon("imagens\\newuser24x24.png"));
    private JButton botaoEditar = new JButton("Editar", (Icon)new ImageIcon("imagens\\edituser24x24.png"));
    private JButton botaoExcluir = new JButton("Excluir", (Icon)new ImageIcon("imagens\\deleteuser24x24.png"));

    public PainelUsuario() {
       
        
        tabelaUsuario.setModel(new ModeloUsuario());
        tabelaUsuario.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        botaoCadastrar.addActionListener(te);
        botaoEditar.addActionListener(te);
        
        
       
        
        painelSuperior.add(barraRolagem);
        
        
        painelInferior.add(botaoCadastrar);
        painelInferior.add(botaoEditar);
        painelInferior.add(botaoExcluir);
        
        
        painelUsuario.add(painelSuperior, BorderLayout.CENTER);
        painelUsuario.add(painelInferior, BorderLayout.PAGE_END);
    }  
    
    public  JPanel getPainelUsuario(){
      
        return painelUsuario;
    }
    
 
  
    public class TratamentoEvento implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == botaoCadastrar){
                PainelCadastrarUsuario pcu = new PainelCadastrarUsuario();
               
              
                
            }else{
                if(e.getSource() == botaoEditar){
                    try{
                       if(tabelaUsuario.getSelectedRow()==-1){
                            throw new UsuarioEXCECAO("É necessário selecionar um usuário.", "Aviso");
                        }else{
                         
                            PainelEditarUsuario pce = new PainelEditarUsuario(new UsuarioLogica().buscarUsuarioPeloCPF(Long.parseLong(tabelaUsuario.getModel().getValueAt(tabelaUsuario.getSelectedRow(), 0).toString())));
                       } 
                    }catch(UsuarioEXCECAO uxc){
                        
                    }
                }
            }
       
        }
    }
    
}
E o código do PainelCadastrarUsuario é
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ufac.lpp.barionix.visao;

import br.com.ufac.lpp.barionix.excecoes.UsuarioEXCECAO;
import br.com.ufac.lpp.barionix.logica.UsuarioLogica;
import br.com.ufac.lpp.barionix.modelosTabelas.ModeloUsuario;
import br.com.ufac.lpp.barionix.visao.validador.ValidarGerenciarUsuario;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Albert
 */
public class PainelCadastrarUsuario extends PainelGerenciarUsuario{
    HashMap mapa = new HashMap();
    public PainelCadastrarUsuario() {
        super("Cadastrar Usuário");
        botaoSalvar.addActionListener(new TratamentoEvento());
       
    }
    
   public class TratamentoEvento implements ActionListener{
    public void actionPerformed(ActionEvent e){
            try {
                if(e.getSource() == botaoSalvar){
                    HashMap mapa = new HashMap();
                    mapa.put("Usuário",fieldUsuario.getText());
                    mapa.put("CPF", fieldCpf.getText().replace("_","").replace(".","").replace("-", ""));
                    mapa.put("Senha",fieldSenha.getText());
                    mapa.put("Admin",radioAdministrador.isSelected());
                    mapa.put("User",radioUsuario.isSelected());
                    ValidarGerenciarUsuario vgu = new ValidarGerenciarUsuario(mapa);
                    UsuarioLogica ul = new UsuarioLogica(vgu.validarUsuario());
                    ul.cadastrarUsuario();
                }
               
            } catch (UsuarioEXCECAO ex) {
                
            }
            
        }   
   }
}

Bom, como pode ser visto nos código ai em cima, não existe chamada para o método atualizar do ModeloUsuario porque já tentei usar em vários lugares do código. Mas sem sucesso.

Grato pela ajuda.

Albert F. Josuá Costa

Criado 21 de julho de 2012
Respostas 0
Participantes 1