Mostrar vários itens no jComboBox

9 respostas
rafa120

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
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;
    }
Form
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);
        }
    }

9 Respostas

thiago.correa

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!

evertonsilvagomesjav

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

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);
}

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

rafa120

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

public List<CadContrato> 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;
    }
e chamei no Formulário assim
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);
       }
    }
thiago.correa

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!

rafa120

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?

thiago.correa

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

rafa120

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

thiago.correa

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);   
       }   
    }
rafa120

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é!!!

Criado 8 de abril de 2010
Ultima resposta 8 de abr. de 2010
Respostas 9
Participantes 3