Preencher JTable

9 respostas
R

Bom, estou querendo preencher um JTable com dados provenientes de uma consulta feita ao banco.

Na classe AgendaControle fiz o seguinte método:
public ArrayList pesquisa (AgendaTelefone agenda){
       try{
           con = new Conexao();
           stm = con.conexao().prepareStatement("select * from telefone");
           stm.execute();
           while(rs.next()){
               agenda.setId(rs.getInt("id"));
               agenda.setNome(rs.getString("nome"));
               agenda.setFone1(rs.getString("telefone1"));
               agenda.setFone2(rs.getString("telefone2"));
               agenda.setFone3(rs.getString("telefone3"));
               agenda.setEndereco(rs.getString("endereco"));
               
               contato.add(agenda);
               
               
           }
           con.fechaConexao();
       }catch (Exception e){
           System.out.println("Erro" + e);
       }
       return contato;
       
   }
e na interface gráfica estou tentando popular a tabela com o array de contatos, porém não estou conseguindo
public void preencherTabela( ArrayList<AgendaTelefone>contato){
        DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();
        modelo.setNumRows(0);
        
        while(){
            modelo.addRow();
        }
    }

Vi vários exemplos fazendo a consulta dentro do método preencher tabela, porém quando tento fazer a consulta em outra classe não consigo.

9 Respostas

d34d_d3v1l

Primeiro: a classe q faz acesso ao bd nao deve se chamar ‘Controle’…
Segundo: que tal aprender Hibernate?
Terceiro: nao use DTM… leia o topico na minha assinatura.

SandroSoftwares

eu estou com um problema parecido:

public ArrayList<Contato> getContatosCadastrados() throws SQLException {
        String sql = "Select * from Agenda order by nome";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        Contato  contato = new Contato();
        ResultSet rs = stmt.executeQuery();
   
        ArrayList<Contato>  contatos = new ArrayList<Contato>();
        while (rs.next()) {
            contato.setIdContato(rs.getInt("idcontato"));
            contato.setNome(rs.getString("nome"));
            contato.setCelular1(rs.getString("celular1"));
            contato.setCelular2(rs.getString("celular2"));
            contato.setTelefone(rs.getString("telefone"));
            contato.setFax(rs.getString("fax"));

            contatos.add(contato);
            
     int a =0;
     System.out.println(contatos.get(a++).getNome()); // aqui retorna cada nome gravado no banco
        }
        return contatos;
    }

mas na hora de preencher a tabela só retorna o último elemento do arraylist

public void atualizaJTable() {  
     try {
            AgendaDao dao = new AgendaDao();
      modelo = (DefaultTableModel) jTableTelefones.getModel();
            modelo.setNumRows(0);

              ArrayList<Contato> contatos = dao.getContatosCadastrados();
           
            for (int cont= 0, i =0; i<contatos.size();++i, ++cont){
                
                //Aqui você adiciona os campos do banco de dados no jTable.
             modelo.addRow(new Object[]{cont, contatos.get(i).getIdContato(), contatos.get(i).getNome(), contatos.get(i).getCelular1(), contatos.get(i).getCelular2(), contatos.get(i).getTelefone(), contatos.get(i).getFax()});
          
            }
 } catch (SQLException ex) {
        }
wagnerfrancisco

Qual a exceção que ocorre RosiFrasson?

Como o d34d_d3v1l comentou, evitem usar o DefaultTableModel. Se insistirem, observem que o método setNumRows foi substituído por setRowCount.

E não esqueçam de usar blocos try/finally para fechar conexões, resultsets e etc.

SandroSoftwares

colegas,

me perdoem se estiver errado, mas se na linha 19 do primeiro trecho de código que eu postei retorna todos os nomes gravados no banco certinho e na linha 12 do segundo trecho de código retorna apenas o ultimo elemento do array, por que o problema está no DefaultTableModel???

acho que o problema está na linha 7:

ArrayList<Contato> contatos = dao.getContatosCadastrados(); //aqui não retorna tudo, só retorna o último...

Alguma luz ai?

d34d_d3v1l

hehehe ja vi o problema…

coloque o

Contato contato = new Contato();

dentro do:

while(rs.next()){
SandroSoftwares

como é que pode?

o problema era só esse… :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

rsrsrs…

resolvido d34d_d3v1l!

d34d_d3v1l

SandroSoftwares:
como é que pode?

o problema era só esse… :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

rsrsrs…

resolvido d34d_d3v1l!

isso ae…
Coloca [Resolvido] no titulo to post ?
:slight_smile:

vc ja entendeu o pq isso aconteceu ne?

Bom, antes de esperar tua resposta, vamos a explicação:

vc tava adicionar apenas uma instancia de contato na array list…
ai vc fica modificando os seus atributos.

SandroSoftwares

Perfect!

Só não altero o título pois ainda tem o problema do nosso amigo RosiFrasson, criador do post!

Pra mim resolveu aqui!

d34d_d3v1l

SandroSoftwares:
Perfect!

Só não altero o título pois ainda tem o problema do nosso amigo RosiFrasson, criador do post!

Pra mim resolveu aqui!


dsuhasdhuasd

putzz…

q bola fora!!
desculpa kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

Criado 14 de setembro de 2012
Ultima resposta 16 de set. de 2012
Respostas 9
Participantes 4