Capturar dados do JComboBox

3 respostas
J
Bom dia pessoal.

Tenho um jcombo que é alimentado da seguinte forma.

EntityManager manager = Util.getManager();

manager.getTransaction().begin();

DefaultComboBoxModel comboModel = (DefaultComboBoxModel) jcomboCategoria.getModel();

comboModel.removeAllElements();

List categorias = manager.createQuery(select cat from Categoria cat order by cat.descricao, Categoria.class).getResultList();
for(Categoria c : categorias){
       comboModel.addElement(c.getDescricao() + " " + c.getIdCategoria());
    }

Estou tentando captura o id da categoria da seguinte forma mas não funciona de forma alguma.
O que posso fazer para conseguir pegar o id da categoria. Não sei , mas acho que a forma que estou alimentando o jcombobox está errada.

Forma que estou utitilizando para pegar o idCategoria mas não esta dando certo.

Categoria categoria = (Categoria)jcomboCategoria.getSelectedItem();
JOptionPane.showMessageDialog(null,Integer.parseInt(categoria.getIdCategoria().toString()));

3 Respostas

Rodrigo_Void
Olá, sua abordagem aparenta estar incorreta, pois vc adiciona Strings ao combo e depois está tentando pegar uma Categoria, sem lógica.

O ideal é adicionar sua lista de objetos (não String) e depois sim vc consegue capturar o objeto selecionado como estás tentando fazer. Seguem alguns links com exemplos:

<aside class="quote" data-post="1" data-topic="31602">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="20" height="20" src="/letter_avatar_proxy/v2/letter/v/f475e1/40.png" class="avatar">
    <a href="/t/adicionar-items-em-uma-jcombobox/31602?source_topic_id=356402">Adicionar items em uma JComboBox</a> <a class="badge-wrapper  bullet" href="/c/programacao/java">Java</a>
  </div>
  <blockquote>
    Como faco para adicionar items em em uma JCombobox mas os items estao em um BD. Eu  tentei carregar os dados em um array mas deu erro, e tambem em um arraylist, para depois adiciona-los no Combobox, mas quando vou adicina-lo ele apenas adicionava o ultimo elemento. E tambem imaginei adicionar direto quando estou pesquisando. 

 est.addItem(rs.getString("estado"));

Mas tambem deu erro. 

Alguem pode me ajudar???
  </blockquote>
</aside>


<aside class="quote" data-post="1" data-topic="81014">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="20" height="20" src="/user_avatar/www.guj.com.br/jonatha_java/40/17721_1.png" class="avatar">
    <a href="/t/resolvido-como-passa-uma-objeto-para-uma-jcombobox/81014?source_topic_id=356402">[resolvido] como passa uma objeto para uma JcomboBox</a> <a class="badge-wrapper  bullet" href="/c/programacao/java">Java</a>
  </div>
  <blockquote>
    Ola pessoa estou com a seguinte dificuldade tenho a classe chamada "UF" na qual tem dois atributo id e sigla. 

@Entity public Classe UF{ 

@Id private int id; private String sigla; 

...... 

} 

..... 

estou fazendo assim. 

 private void listaCidade() {         cmbCidade.addItem("");         List lista = new ArrayList();         DAOGenerico g = new DAOGenerico();         lista = g.consultaHQL("Cidade"); 

    for (Object o : lista) {
        Cidade m = new Cidade();
        m = (Cidade) o;
 
  </blockquote>
</aside>
JuniorMaia

Tive a mesma dúvida que você, está documentada aqui: ArrayList, Classe de objetos ou whiles do resultset

J

boa tarde a todos. A nível de compartilhamento a solução do problema foi a seguinte.

EntityManager manager = Util.getManager();

manager.getTransaction().begin();

//assim como é feito numa JTable, temos o DefaultComboBoxModel que é o model do JComboBox

DefaultComboBoxModel comboModel = (DefaultComboBoxModel) jcomboCategoria.getModel();

//removendo todos os elementos do combo

comboModel.removeAllElements();

List categorias = manager.createQuery(select cat from Categoria cat order by cat.descricao”, Categoria.class).getResultList();

Para alimentar o JComboBox utilizar a instrução abaixo

for (Categoria c : categorias) {
comboModel.addElement©;

}

    Categoria c = (Categoria) jcomboCategoria.getSelectedItem();
Criado 27 de setembro de 2017
Ultima resposta 15 de out. de 2017
Respostas 3
Participantes 3