Mostrar vários itens no jComboBox

Boa tarde a todos!

Como eu faço para mostrar vários itens (Strings) no meu jComboBox?
Puxo do banco de dados vários registros cadastrados, porém o primeiro registro esta aparecendo. Os outros que veem logo depois não aparece.

Eu a seguinte condição. Oq será q ta de errado? se eu coloco FIRST, tb nao da certo.

DAO

[code]
public String idObra;
public boolean result = false;

public boolean selecionaIdObra() throws SQLException
{
    String sql = "select * from cad_obras";
    PreparedStatement stmt = conexao.prepareStatement(sql);
    ResultSet rs = stmt.executeQuery();

    if (rs.next())
    {
        result = true;
        idObra = rs.getString("id_obra");
    }
    return result;
}[/code]

Form

[code]public void mostrarIdObra()
{
try
{
ContratoDao dao = new ContratoDao();

        dao.selecionaIdObra();

        if (dao.result == true)
        {
            cbObra.addItem(dao.idObra);
        }
        else
        {
            JOptionPane.showMessageDialog(this, "Nenhuma obra cadastrada com este nome", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }
    catch (SQLException erro)
    {
        JOptionPane.showMessageDialog(this, "Erro"+erro);
    }
}[/code]

antes de mais nada, faça um método que retorne uma lista, e não um booelan dizendo se executou ou não, algo do tipo

public List<String> buscarOpcoes() {
//abrir conexão e execução da consulta aqui
List<String> valores = new ArrayList<String>();
while (rs.next()) {
    valores.add(rs.getString(1));
}

return valores;

Feito isso percorra essa List populando o seu combo!

Digamos que vc tem uma Class com getters e setters ou um construtor desses objetos que vao vir do banco ai vc pode fazer:

[code]public void buscarOpcoes() {

//abrir conexão e execução da consulta aqui

while (rs.next()) {
int idFunc = rs.getInt(“ID_Func”);
String nome = rs.getString(“Nome_Funcionario”);

 SuaClass sc = new SuaClass();

  sc.set(idFunc);
  sc.set(nome);
  
  seuComboBox.add(sc);

}
[/code]

Lembrando que pra isso vc terá que sobreescrever seu método toString na SuaClass.

Hmm, isso mesmo… é a lista
já tinha até o código pronto, mas nao caiu a ficha.

maass, como eu uso DAO, fica um pouco diferente

Ai aparece agora somente um registro ainda, tenho 2 registros e esta aparecendo o segundo.

olha como eu criei a lista, na class DAO

[code]public List getListaIdObra() throws SQLException
{
String sql = “select * from cad_obras”;//“SELECT id_obra from cad_contratos”;
PreparedStatement stmt = this.conexao.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();

    List<CadContrato> minhaLista1 = new ArrayList<CadContrato>();

    while (rs.next())
    {
        idObra = rs.getString("id_obra");

        CadContrato c1 = new CadContrato();
        c1.setObra(idObra);
        minhaLista1.add(c1);
    }

    rs.close();
    stmt.close();
    return minhaLista1;
}[/code]

e chamei no Formulário assim

[code]public void aiai()
{
try
{
ContratoDao dao = new ContratoDao();
dao.getListaIdObra();
cbObra.addItem(dao.idObra);

   }
   catch (SQLException ex)
   {
       JOptionPane.showMessageDialog(this, ex, "Erro", JOptionPane.ERROR_MESSAGE, null);
   }
}[/code]

O fato de você estar usando dao ou não, não tem nada a ver com o que você está fazendo, que ainda continua errado, você deve usar o retorno (no caso a lista) do teu método que faz a pesquisa, e não esse idObra!

este idObra é declarei ele emcima da lista como public para poder aparecer ele no formulário swing!

public String idObra;

mas a minha lista como fiz, nao esta retornando do método?

Está sim, mas aonde você a está usando?! Pelo que eu vi em lugar nenhum!

hmm, menos mal! vou tentar usar entao rs… uma hora da certo

Cara, para não me chamares de mal e reservar meu lugar no céu aushdaushduashdsa


public void aiai()   
    {   
       try   
       {   
            ContratoDao dao = new ContratoDao();   
            List<CadContrato> listaObras = dao.getListaIdObra();   
            for (CadContrato cc : listaObras)
cbObra.addItem(cc.getObra());   
  
       }   
       catch (SQLException ex)   
       {   
           JOptionPane.showMessageDialog(this, ex, "Erro", JOptionPane.ERROR_MESSAGE, null);   
       }   
    }  

kkk que isso…só de ter ajudado com as repostas ali pra cima já estava dando uma luz melhor!

mas deu certo! e vou te falar…eu ia conseguir implementar isso, mas ia DEMORAR viu? eu tava pensando em outras coisas bem diferentes.

kkk que Deus lhe abençoe e reserve seu lugar no céu :stuck_out_tongue:

obrigadao mesmo!
Até!!!