Problema ao exibir consulta em um jtable

3 respostas
rafaelcanc

galera alguem pode me ajudar, estou buscando os cadastros do banco de dados e armazenando em um Vector, ai ai tudo bem, porem quando exibi-los em um jtable ele exibe apenas o ultimo cadastro a quantidade de vezes de cadastros cadastrados, ou seja, se tem 2 cadstros exibe o ultimo cadastro 2x

public menuConsulta(final Vector resultados) {

        initComponents(resultados);
        
        botaoConsulta.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent e) {
                javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();
                for(int i=0;i<resultados.size();i++){
                     System.out.print("\n"+"Dados do cliente cadastrado");
                     cliente cli = (cliente)resultados.get(i);
                     dtm.addRow(new Object[]{"",cli.getNome(),cli.getDataNascimento(), cli.getCPF(), cli.getRg(),cli.getEmail(),cli.getEndRua(),cli.getEndNro(),cli.getEndComp(),cli.getEndBairro(),cli.getEndCep(),cli.getCidade()});
                }       
           }
        });

3 Respostas

ViniGodoy
  1. Não use Vector, use ArrayList: http://www.guj.com.br/posts/list/74068.java#389435
  2. Procure especificar o tipo da sua coleção ao declara-la. Ou seja, ao invés de:
public menuConsulta(final Vector resultados)

Faça:

  1. Não use DefaultTableModel: É mais difícil, mais inseguro, consome mais memória e é mais lento, siga o link da minha assinatura para aprender a usar o JTable;
erico_kl

você também tem a opção de utilizar alguma TableModel pronta, por exemplo a ObjectTableModel do Mark_Ameba…
se não me engano o ViniGodoy também fez uma que implementa auto-filtro…

mas o interessante seria você criar a sua pra saber como funciona e esquecer definitivamente da DefaultTableModel

rafaelcanc

blz…estou utilizando agora o arrayList e o jtable do seu tutorial, porem continuo com o mesmo problema, é exibido apenas o ultimo cadastro

acho que é nessa parte que estou errando

na classe menuConsulta

modelo = new ClienteTableModel(); // este parte de baixo da erro no netbeans por isso nao estou utilizando //modelo.addTableModelListener(this); modelo.adicionaLista(resultados);

e na classe ClienteTableModel

public void adicionaLista(List<cliente> resultados) { clientes.addAll(resultados); fireTableRowsInserted(i, i + resultados.size()); }

esse List resultados esta com os dados dos clientes, falta apenas exibir todos os cadastros
agradeco a ajuda de vcs
abraço

Criado 3 de setembro de 2010
Ultima resposta 3 de set. de 2010
Respostas 3
Participantes 3