ComboBox carrega endereço da memória

3 respostas
L

Pessoal o seguinte código abaixo carrega na minha comboBox o endereço da memória quando deveria carregar os dados do meu BD, porém ela contém a quantidade exata de registros no meu BD.

Obs: ao selecionar qualquer registro(endereço memória), ela carrega meus TextFields na VIEW com sucesso.

// método que carrega a combo.
 private void CarregarComboCliente(){
        ClienteDAO dao = new ClienteDAO();
        DefaultComboBoxModel comboMobel = (DefaultComboBoxModel) jComboCliente.getModel();
        for(Cliente c : dao.getClientes()){
            //jComboCliente.addItem(c.getNome());

            comboMobel.addElement(c);
        }

        jComboCliente.addItemListener(new ItemListener(){
            public void itemStateChanged(ItemEvent evt){
                Cliente c = (Cliente) jComboCliente.getSelectedItem();
                txtCPF.setText(c.getCpf_cnpj());
                txtEndereco.setText(c.getEndereco());
                txtTelefone.setText(c.getTelefone());
                txtRg.setText(c.getRg_ie());
                txtCelular.setText(c.getCelular());
                txtNumero.setText(c.getNum_endereco());
            }
        });
    }

//método DAO

public ArrayList<Cliente> getClientes(){

        ArrayList <Cliente> clientes = new ArrayList<Cliente>();

        try{

        sql = "select * from cliente";
        conexao = new Conexao();
        Connection conn = (Connection) conexao.getConnection();
        stmt = (Statement) conn.createStatement();
        ResultSet rs = stmt.executeQuery(sql);

        while(rs.next()){

            Cliente cliente = new Cliente();
            cliente.setCodigo(rs.getInt(1));
            cliente.setNome(rs.getString(2));
            cliente.setCpf_cnpj(rs.getString(3));
            cliente.setRg_ie(rs.getString(4));
            cliente.setEndereco(rs.getString(5));
            cliente.setNum_endereco(rs.getString(6));
            cliente.setBairro(rs.getString(7));
            cliente.setCep(rs.getString(8));
            cliente.setCidade(rs.getString(9));
            cliente.setUf(rs.getString(10));
            cliente.setTelefone(rs.getString(11));
            cliente.setCelular(rs.getString(12));

            clientes.add(cliente);
        }

        stmt.close();
        conn.close();

        }catch(SQLException e){
            JOptionPane.showMessageDialog(null, e.toString(), "Não existe clientes cadastrados.",
                    JOptionPane.ERROR_MESSAGE);
        }

        return clientes;
    }

Aguardo sugestões e agradeço desde já.

Obrigado.

3 Respostas

thundercas

Você está adicionando o objeto Cliente ao Combo, por isso ele exibe o método toString() do objeto Cliente. O Java não tem como saber que deve ser utilizado o GetNome() para exibição.

Provavelmente há algum método no ComboBoxModel para você definir o valor para exibição do objeto no combo.

Jesuino_Master

Oi,

Sobreescreva o método toString do seu pojo, retornando o que você quiser que seja mostrado…

[]'s

L

Pojo ??

Percebi que ao trocar o comando

comboMobel.addElement(c);

por

jComboCliente.addItem(c.getNome());

Os nomes aparecem corretamente na combo, porém ao selecionar qualquer nome, está dando erro ao preencher os Textfiels correspondentes à este nome através do código abaixo:

jComboCliente.addItemListener(new ItemListener(){
                public void itemStateChanged(ItemEvent evt){

                    if(!jComboCliente.getSelectedItem().equals(selecione)){

                    Cliente c = (Cliente) jComboCliente.getSelectedItem();
                    txtCPF.setText(c.getCpf_cnpj());
                    txtEndereco.setText(c.getEndereco());
                    txtTelefone.setText(c.getTelefone());
                    txtRg.setText(c.getRg_ie());
                    txtCelular.setText(c.getCelular());
                    txtNumero.setText(c.getNum_endereco());
                    
                    }else{

                        txtCPF.setText("");
                        txtEndereco.setText("");
                        txtTelefone.setText("");
                        txtRg.setText("");
                        txtCelular.setText("");
                        txtNumero.setText("");
                    }
                }
            });
Criado 24 de março de 2011
Ultima resposta 27 de mar. de 2011
Respostas 3
Participantes 3