Jtable funciona parcialmente

5 respostas
S

minha jtable funciona so que em vez de retorna todos os dados da tabela, apenas aparece a ultima linha da tabela do bd.

tenho esse método de consulta no DAO:
public List Clientes(DomainObject domainObject) throws SQLException {
    List <Cliente> list_cliente = new ArrayList<Cliente>();

    try{
    Cliente cliente = (Cliente)domainObject;

    Connection conn = ConectionBD.getConnection();
    String sql = null;
    sql = "select * from cliente order by idcliente";
    PreparedStatement pst = conn.prepareStatement(sql);
    ResultSet rs = pst.executeQuery();

  

while (rs.next()) {
    Endereco endereco = new Endereco();
    endereco.setRua(rs.getString("rua"));
    endereco.setNumero(rs.getInt("numero"));
    endereco.setCidade(rs.getString("cidade"));
    endereco.setBairro(rs.getString("bairro"));
    cliente.setEndereco(endereco);


    cliente.setCPF(rs.getInt("cpf"));
    cliente.setNome(rs.getString("nome"));
    cliente.setTelefone(rs.getInt("telefone"));
    cliente.setID(rs.getInt("idcliente"));
    list_cliente.add(cliente);
    }}catch(Exception e){
    e.printStackTrace();
    JOptionPane.showMessageDialog(null, e.getMessage());
    }
    return list_cliente;
    }
e aqui eh minha view :
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         



        try {
            IFachada fachada = new Fachada();
            Cliente cliente = new Cliente();            DefaultTableModel modelo = new DefaultTableModel(new Object[]{"Código do Cliente", "Nome", "CPF","Cidade"}, 0);
            List<Cliente> list_cliente = fachada.Clientes(cliente);



            for (Cliente listcli : list_cliente) {
 modelo.addRow(new Object[]{listcli.getID(),listcli.getNome(),listcli.getCPF(),listcli.getEndereco().getCidade()});
            }
    
              


                jTable1.setModel(modelo);

            
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.getMessage());

5 Respostas

ViniGodoy

Não é o cara que fez um post longuíssimo sobre MVC em Swing e está usando o DefaultTableModel?

Comece aprendendo a trabalhar com o JTable de verdade, e se livre desse model porcaria. Ele vai te induzir cedo ou tarde a mover lógica de negócio para suas GUIs.

ViniGodoy

Anyway, o problema do seu código está no fato de que você só criou uma única instância da classe Cliente.
Então, você está fazendo sets sobre o mesmo cliente, e inserindo sempre o mesmo cliente na sua lista.

Para corrigir, dentro do while você deveria fazer um “new cliente”, ou chamar algum método que faça a carga do cliente baseado naquele id (e nesse caso, esse método faria um new para você).

S

eu ja fiz varios post… agora não sei qual post vc esta falando… vou fazer o q vc me falou…
brigado

S

sua dica deu certo… funfou de boa!
vlw

Marky.Vasconcelos

Funcionou parcialmente, voce ainda esa usando DefaultTableModel.

Criado 28 de maio de 2010
Ultima resposta 31 de mai. de 2010
Respostas 5
Participantes 3