[Resolvido] Dados do banco que aparece na combobox aparece tudo em uma unica linha

2 respostas
F

Olá pessoal

Tenho uma combobox que é preenchida com dados que vem do banco, porém esses dados ficam tudo em uma única linha do combobox, como se o combobox tivesse uma única opção.

Segue o código abaixo:

Select no banco

public ArrayList<Pessoa> preencherComboDoutor() throws SQLException{

            Conexao conexao =  new Conexao();

            ArrayList<Pessoa> list = new ArrayList<Pessoa>();

            PreparedStatement pstmt = conexao.getConexao().
                        prepareStatement("Select p.nome from pessoa p, pessoafisica pf where pf.codigo = p.codigo and pf.cargo = 'Dentista' ");
            ResultSet rs = pstmt.executeQuery();

            while(rs.next()){
                Pessoa pessoa = new Pessoa();
                pessoa.setNome(rs.getString("nome"));
                list.add(pessoa);
            }

            return list;
        }

Botão que chama o método que preenche combobox.

private void jbAg_NovoAgendamentoActionPerformed(java.awt.event.ActionEvent evt) {                                                     

        limpar_campos_Agendar();
        habilitar_campos_Agendar();

        try {

            jcbAg_PacDoutor.addItem("Selecione");
            jcbAg_PacDoutor.addItem(pfDAO.preencherComboDoutor());
       
         } catch (SQLException ex) {
            Logger.getLogger(frmAgenda.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

O que está errado ?

2 Respostas

dreampeppers99

Não é bem um erro.

jcbAg_PacDoutor.addItem("Selecione"); jcbAg_PacDoutor.addItem(pfDAO.preencherComboDoutor());

Como você deve ter percebido a cada chamada ao método .addItem UM item é preenchido da combo. Na linha dois, você passa uma string que represta toda a lista de doutores. O que deve fazer é ao invés de preencher só com uma, iterar sobre a lista e preencher um a um.

jcbAg_PacDoutor.addItem("Selecione"); List<Pessoa> doutores = pfDAO.preencherComboDoutor(); for (Pessoa doutor : doutores) { jcbAg_PacDoutor.addItem(doutor); }
Lembrando que ele vai ser preenchido com o toString() do Pessoa, se achar mais conviniente use uma propriedade da Pessoa.

jcbAg_PacDoutor.addItem(doutor.getCRM() + " - " + doutor.getNome());

F

Obrigado fera. Foi resolvido.

Criado 13 de julho de 2011
Ultima resposta 13 de jul. de 2011
Respostas 2
Participantes 2