Jogar dados do BD em um JTable

Olá pessoal, estou criando uma agenda telefonica, e na minha tela principal, eu tenho vários botões, cada um reprensantando uma letra, e um botão que lista todas as letras, bom, eu estou com dificuldade em pegar os dados do banco e jogar na JTable, e também para filtrar os dados(caso a pessoa clique na letra “A”, mostrar todos os nomes com que começam com a letra “A”). Segue abaixo o meu código:


public Principal() {
        initComponents();
        setLocationRelativeTo(null);
            
        NCadContato ngcContato = new NCadContato();
        List<Contato> listaContatos = new LinkedList<Contato>();
        try {
            listaContatos = ngcContato.listar();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
         int i = 0;
            String [][] dados = new String[listaContatos.size()][9];
            while (i < listaContatos.size()){
                    dados[i][0] = listaContatos.get(i).getNome();
                    dados[i][1] = listaContatos.get(i).getTelefone();
                    dados[i][2] = listaContatos.get(i).getCelular();
                    dados[i][3] = listaContatos.get(i).getEndereco();
                    dados[i][4] = listaContatos.get(i).getBairro();
                    dados[i][5] = listaContatos.get(i).getCidade();
                    dados[i][6] = listaContatos.get(i).getDatanasc();
                    dados[i][7] = listaContatos.get(i).getEmail();
                    dados[i][8] = listaContatos.get(i).getObservacao();
                    i++;
            }
            String[] colunas = new String []{"Nome","Telefone","Celular","Endereço","Bairro","Cidade","DataNasc","Email","Observação"};
            DefaultTableModel modelo = new DefaultTableModel(dados, colunas); 
            tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            tabela.setModel(modelo);
            TableColumn column = null;
            for ( i = 0; i < 9; i++) {
            column = tabela.getColumnModel().getColumn(i);
             if (i == 0) {
               column.setPreferredWidth(350);
              } else if (i == 1) {
               column.setPreferredWidth(100);
               } else if (i == 2) {
                column.setPreferredWidth(100);
                } else if(i==3) {
                 column.setPreferredWidth(250);
                  }
                else if(i==4){
                  column.setPreferredWidth(150);
                }else if(i==5){
                  column.setPreferredWidth(150);
                }else if(i==7){
                  column.setPreferredWidth(300);
                }else if(i==8){
                  column.setPreferredWidth(400);
                }
            }
        
                
 
    }

Bom, neste código eu defini as colunas do meu JTable.

private void btnAllActionPerformed(java.awt.event.ActionEvent evt) {                                       
          // addRow(listarcontatos());
       
        
    }   

E aqui meu botão para listar todos os nomes, lembrando que na camada de negócio tenho um método que retorna uma lista com todos os contatos do banco, mas mesmo assim nao sei como listar no JTable.

Oi,

[code]private void btnAllActionPerformed(java.awt.event.ActionEvent evt) {
modelo.addRow(listarcontatos());

}   [/code]

Não resolve?

Tchauzin!

Como faço para chamar o modelo que está no método construtor? :oops:

Oi,

Defina ele como global e não local…

Tchauzin!

ContatoTableModel modelo = (ContatoTableModel) jTable.getTableModel();
modelo.addAll(listarContatos());

[quote=Marky.Vasconcelos] ContatoTableModel modelo = (ContatoTableModel) jTable.getTableModel(); modelo.addAll(listarContatos()); [/quote]

Oi,

É… tem esse jeito também!

Tchauzin!

[quote=lina][quote=Marky.Vasconcelos] ContatoTableModel modelo = (ContatoTableModel) jTable.getTableModel(); modelo.addAll(listarContatos()); [/quote]

Oi,

É… tem esse jeito também!

Tchauzin![/quote]

O melhor jeito :wink:

[quote=Marky.Vasconcelos][quote=lina][quote=Marky.Vasconcelos] ContatoTableModel modelo = (ContatoTableModel) jTable.getTableModel(); modelo.addAll(listarContatos()); [/quote]

Oi,

É… tem esse jeito também!

Tchauzin![/quote]

O melhor jeito ;)[/quote]

Oi,

Tá… é mesmo!

Só um detalhe… ele esta usando uma JTable comum… então seria: tabela.getModel();

:twisted:

Tchauzin!