Erro ao tentar preencher combobox

1 resposta
J

Bom dia galera, estou com um probleminha para preencher um combobox com dados do banco. Seu o código:

public JComboBox<Refeicao> consulta(String data) {  
                JComboBox<Refeicao> JCBRefeicao = new JComboBox<Refeicao>();  
                try {  
                    Refeicao refeicao = new Refeicao();  
                    PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from refeicao where data = ?");  
                    stmt.setString(1, data);  
                      
                    ResultSet rs = stmt.executeQuery();  
                      
                    while (rs.next()) {  
                        refeicao.setIdRefeicao(rs.getString("idRefeicao"));  
                        refeicao.setRefeicao(rs.getString("refeicao"));  
                        refeicao.setData(rs.getString("data"));  
                        JCBRefeicao.addItem(refeicao);  
                    }  
      
                    rs.close();  
                    stmt.close();  
      
                    return JCBRefeicao;  
      
                } catch (SQLException e) {  
                    throw new RuntimeException(e);  
                }  
            }

Rodando um simples código de teste ele retorna o seguinte:

2
FILÉ DE FRANGO GRELHADO
FILÉ DE FRANGO GRELHADO

Segue o código:

JanelaFuncionalidades jf = new JanelaFuncionalidades();  
    JComboBox<Refeicao> refeicao = new JComboBox<Refeicao>();  
            refeicao = jf.JFCompletaCBRefeicoes("02/10/2012");  
              
            System.out.println(refeicao.getItemCount());  
            System.out.println(refeicao.getItemAt(0));  
            System.out.println(refeicao.getItemAt(1));

O problema é que possuem dois registros diferentes e não iguais como os "sysos" mostram.

O retorno deveria ser assim:

2
CARNE ORIENTAL
FILÉ DE FRANGO GRELHADO

Alguém consegue me ajudar???

1 Resposta

douglas_vidotto

Voce está sobrescrevendo os atributos do objeto refeicao quando ele entra a segunda vez no loop, e usando esse mesmo para adicionar no combo box. Por isso ele mostra o mesmo valor duas vezes. Para cada iteração no rs.next(), crie um objeto novo e salve-o no combobox.

Criado 2 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 1
Participantes 2