Recuperar ID do Item do JcomboBox [RESOLVIDO]

5 respostas
C

Boa Tarde, alguem poderia me ajudar, já pesquisei na net e juro que nao consigui recuperar o id corretamente.

Tenho o seguinte código.

private void populacombo(){    
        
        JbAlimentos.removeAllItems();
        ControleAlimentos controlee = new ControleAlimentos();
        controlee.listarTodos();
        
        List<ItemAlimentacao> itenss = controlee.listarTodos();
         //pega o modelo do combobox
        DefaultComboBoxModel jb = (DefaultComboBoxModel)JbAlimentos.getModel();
        for (int a = 0; a < itenss.size(); a++){
            Object [] dadoss = new Object[2];
            ItemAlimentacao j = (ItemAlimentacao) itenss.get(a);
            dadoss [0] = j.getAlimentos_idalimentos();
            dadoss [1] = j.getNome_alimentos();
            jb.addElement(j.getNome_alimentos());
            
//          ItemAlimentacao obj = (ItemAlimentacao) itenss.get(JbAlimentos.getSelectedIndex()); 
//         id = obj.getAlimentos_idalimentos();
                  
        } 


    }    
    
    
    
    public class ControleAlimentos {
    public List listarTodos (){
        ItemAlimentacaoDao dao = new ItemAlimentacaoDao();
        try{
            return dao.ConsultaAlimentacao(itemalimentacao);
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex);
       }
       return null;
    }

}

Essa parte comentada foi onde tentei recuperar, porem nao consigui.

alguem pode me ajudar ?

5 Respostas

Nicolas_Fernandes

Opa, carlosdesa, tudo bem?
O procedimento é simples:

  1. Você deve, ao invés de fazer essa iteração sobre a coleção, adicionar a própria coleção diretamente ao modelo da JCombobox:
List<ItemAlimentacao> itenss = controlee.listarTodos();
jb.setModel(new DefaultComboBoxModel(itenss.toArray()));
  1. Ao recuperar o item, você deve fazer um cast para o tipo da coleção outrora passada pro modelo:
ItemAlimentacao item = (ItemAlimentacao) jb.getSelectedItem();
  1. Agora, você pode usar o objeto e seus métodos como bem entender:
ItemAlimentacao item = (ItemAlimentacao) jb.getSelectedItem();
JOptionPane.showMessageDialog("O ID do item é: " + item.getId());

Espero ter ajudado,
fique com Deus! :smiley:

C

Obrigado pela ajuda, mas não consegui intender a forma que você disse.

Fiz o seguinte :

////    ############################################################################
////            JCOMBOBOX
////    ############################################################################
    private void populacombo() {

        JbAlimentos.removeAllItems();
        ControleAlimentos controlee = new ControleAlimentos();
        controlee.listarTodos();

        List<ItemAlimentacao> itenss = controlee.listarTodos();
        JbAlimentos.setModel(new DefaultComboBoxModel(itenss.toArray()));
        for (int a = 0; a < itenss.size(); a++) {
            Object[] dadoss = new Object[2];
            ItemAlimentacao j = (ItemAlimentacao) itenss.get(a);
            dadoss[0] = j.getAlimentos_idalimentos();
            dadoss[1] = j.getNome_alimentos();
            JbAlimentos.addItem(j.getNome_alimentos());

        }

    }

    public class ControleAlimentos {

        public List listarTodos() {
            ItemAlimentacaoDao dao = new ItemAlimentacaoDao();
            try {
                return dao.ConsultaAlimentacao(itemalimentacao);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex);
            }
            return null;
        }
    }

Olha na imagem em anexo oque acontece na impressão do jbcombobox.(Não cosnsegue anexar a imagem)

https://dl.dropbox.com/u/72341957/alimentos.jpg

Nicolas_Fernandes

carlosdesa, há alguns pontos onde você tá errando, ainda, veja só:

1. Faltou implementar o método toString() da sua classe ItemAlimentacao;
2. Quando você setou o modelo da combobox passando o a lista como eu te falei, você não precisa fazer aquele seu bloco for, pois os itens da coleção estarão sendo adicionados.

Veja um exemplo:

1. Você cria sua classe POJO implementando o toString(), que será base para exibição na JComboBox.
public class ItemAlimento {

    private long ID;
    private String nome;

    // getters e setters omitidos.

    @Override public String toString() {
        return getNome();
    }
}
2. Você busca esses dados no Banco de dados através de uma classe DAO:
public class ItemAlimentoDAO {

    public List<ItemAlimento> recuperarTodos() throws SQLException {
        String sentenca = "SELECT * FROM ITEMALIMENTO";
        Connection connection = ConnectionManager.getConnection();
        PreparedStatement statement = connection.prepareStatement(sentenca);
        ResultSet result = statement.executeQuery();
 
        List<ItemAlimento> lista = new ArrayList<ItemAlimento>();
        while (result.next()) {
              // monta o objeto e adiciona na lista.
        }
        result.close();
        statement.close();
        connection.close();

        return lista;
    }
}
3. Preenche sua JComboBox com os itens retornados:
try {
    ItemAlimentoDAO itemalimentoDAO = new ItemAlimentoDAO();
    List<ItemAlimento> lista = itemalimentoDAO.recuperarTodos();
    JComboBox comboboxItensAlimentos = new JComboBox(new DefaultComboBoxModel(lista.toArray()));
}
catch (SQLException sqlException) {
    JOptionPane.showMessageDialog(null, "Ocorreu um erro na consulta de dados: " + sqlException.getMessage());
}

- O resultado que irá aparecer na JComboBox será o valor retornado pelo método toString() outrora implementado.

4. Para recuperar o objeto, siga o processo de casting que te falei acima:
ItemAlimento item = (ItemAlimento) comboboxItensAlimentos.getSelectedItem();
JOptionPane.showMessageDialog(null, "O ID do item recuperado é " + item.getID());

Espero que tenha uma base de como prosseguir agora!

C

Opa, deu certo agora.

Fiz da Seguinte Forma.

////    ############################################################################
////            JCOMBOBOX
////    ############################################################################
    private void populacombo() {

        JbAlimentos.removeAllItems();
        ControleAlimentos controlee = new ControleAlimentos();
        controlee.listarTodos();

        List<AlimentosPojo> itenss = controlee.listarTodos();
        JbAlimentos.setModel(new DefaultComboBoxModel(itenss.toArray()));
        List<AlimentosPojo> arlalAlimentos = ItemdaoA.ConsultaAlimentacao(pojo);
        JComboBox comboboxItensAlimentos = new JComboBox(new DefaultComboBoxModel(arlalAlimentos.toArray()));


        combo();
    }

    public class ControleAlimentos {

        public List listarTodos() {
            ItemAlimentacaoDao dao = new ItemAlimentacaoDao();
            try {
                return dao.ConsultaAlimentacao(pojo);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex);
            }
            return null;
        }
    }
    
    public  void combo() {
        AlimentosPojo item = (AlimentosPojo) JbAlimentos.getSelectedItem();  
        JOptionPane.showMessageDialog(null, "O ID do item recuperado é " + item.getID());  
        
    }
Nicolas_Fernandes

Altere o título do seu tópico para [RESOLVIDO].

Criado 9 de outubro de 2012
Ultima resposta 10 de out. de 2012
Respostas 5
Participantes 2