Mostrar dados do banco em uma JCombobox [RESOLVIDO]

Olá, estou desenvolvendo um pequeno software para uma oficina que tem como uma das funções cadastrar clientes, que está ok, e cadastrar carros. Na parte do cadastro de carros eu preciso usar a Jcombobox, para pegar o nome do cliente por chave extrangeira, e gravar o id.A princípio parece simples, mas estou me quebrando =(. Fiz a parte do DAO, as nao sei está correto, aqui vai ela:

public List<Dono> getListaDono()  throws SQLException{
        String sql ="SELECT id_cliente, nome_cliente FROM clientes";
        PreparedStatement stmt = this.connection.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
    
         List<Dono> lista_dono = new ArrayList<Dono>();
   

     while (rs.next()) {
         Dono dono = new Dono();
         dono.setId_dono(rs.getLong("id_cliente"));
         dono.setNome_dono(rs.getString("nome_cliente"));
         lista_dono.add(dono);
       }
       rs.close();
       stmt.close();
    
  return getListaDono();

} 

Se alguem ja fez algo parecido, da uma ajuda ae.

Desde já agradeço.

Observe que você está retornando NÃO a lista de dono, e sim o próprio método getListDono(), ou seja, ele irá executar recursivamente sem interrupção, provavelmente vai te lançar um erro de stackOver…

use:

Uma dica: segundo as convenções de boas práticas do Java, ao nomear algo, use o padrão CamelCase, e não underline, assim sua lista ficaria: listaDono. :wink:

Voce pode implementar uma classe assim

public class ComboCursoModel extends AbstractListModel implements ComboBoxModel {

    private List&lt;Curso&gt; listaCurso;
    private List&lt;String&gt; listaModel;

    private String selected;

    public ComboCursoModel(List&lt;Curso&gt; listaCurso)
    {
        this.listaCurso = listaCurso;
        buildListaModel();
    }

    public int getSize() {
        return this.listaCurso.size();
    }

    public Object getElementAt(int index) {
        return this.listaModel.get(index);
    }

    public void setSelectedItem(Object anItem) {
        this.selected = (String) anItem;
    }

    public Object getSelectedItem() {
        return this.selected;
    }

    private void buildListaModel()
    {
        listaModel = new ArrayList&lt;String&gt;();

        for (Curso curso : listaCurso) {
            listaModel.add(curso.getNome());
        }

    }

    public Curso getCurso()
    {
        for (Curso curso : listaCurso) {
            if(curso.getNome().equals(selected))
            {
                return curso;
            }
        }
        return null;
    }

para exibir os dados na combobox e chama-la na combo assim


comboCurso.setModel(new ComboCursoModel(new CursoBO().buscarTodosCursos()));

Ok, mas Cristian, aonde eu chamo todos estes métodos? Tenho que criar uma classe só para o combo? e o select do banco? Estou quase lá, graças ao pessoal do forum!

Muito obrigado pela atenção.

Primeiro eu criei a classe ComboCursoModel e na tela aonde esta o combo, na ultima linha do construtor eu coloquei


comboCurso.setModel(new ComboCursoModel(new CursoBO().buscarTodosCursos())); 

repare que nesse treecho eu ja onvoquei a minha classe que faz a consulta no banco de dados e retorna uma lista de cursos

new CursoBO().buscarTodosCursos()

no model utilizei o metodo buildListaModel para fazer um list de string que correspondem ao nome do curso, chamei o metodo no construtor

Captei! Vou testar quando chegar em casa de meio dia, estou no meio da aula de portugues XD.Muito obrigada, não tem idéia o quanto me ajudou, é o trabalho final do curso.

Valeu, desculpa o incomodo.

Beleza, boa sorte.

Quando precisar a comunidade esta ai para ajudar

Ate mais.

Voces são uns gênios!!! Consegui valeu!

Tenho que escrever resolvido no titulo? Como faz?

Abraço, até a próxima duvida.

Coloca la no titulo [RESOLVIDO]

beleza boa sorte ate mais