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. 
Voce pode implementar uma classe assim
public class ComboCursoModel extends AbstractListModel implements ComboBoxModel {
private List<Curso> listaCurso;
private List<String> listaModel;
private String selected;
public ComboCursoModel(List<Curso> 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<String>();
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