Problemas com JComboBox

8 respostas
P

Tenho os seguintes métodos:

protected List listar(Class clazz)
    {
        List objects = null;
        s= HibernateUtility.getSession();
        t= s.beginTransaction();
        Query query = s.createQuery("from " + clazz.getName());
        objects = query.list();
        t.commit();
        s.close();
        return objects;
    }
public List findAll(Class clazz) {
            List objects = null;
            Session s = HibernateUtility.getSession();
            Transaction t = s.beginTransaction();
            Query query = s.createQuery("from " + clazz.getName());
            objects = query.list();
            t.commit();
            s.close();
            return objects;
        }

colocando essa consulta no jButton3_mouseClicked(MouseEvent e) por exemplo funciona corretamente:

DAO dao1 = new DAO();
        Entidade entidade1 = new Entidade();
        List lista = dao1.findAll (Entidade.class);
        for (int i = 0; i < lista.size(); i++) 
        {
            entidade1 = (Entidade) lista.get(i);
            System.out.println(entidade1.getNomeE());
        }

porém qdo tento fazer essa consulta aparecer no ComboBox, não consigo de forma alguma, criei esse método:

public void combo() 
    {
        
        DAO dao1 = new DAO();
        Entidade entidade1 = new Entidade();        
        List lista = dao1.findAll (Entidade.class);
        for (int i = 0; i < lista.size(); i++) 
        {
            entidade1 = (Entidade) lista.get(i);
            System.out.println(entidade1.getNomeE());            
        }
        ArrayList ent;
        ent = entidade1.getNomeE(lista.getId());
        jComboBox5.removeAllItems(); 
        
        //adicionando todos os itens do ArrayList ao seu JComboBox 
        for(int i = 0; i < ent.size(); i++) 
        jComboBox5.addItem(ent.get(i));
    }

porém não estou certo de que esta correto, o certo é q não ta funcionando… Alguém pode me ajudar??

8 Respostas

eliasn
public void combo() 
     {
         
         DAO dao1 = new DAO();
         Entidade entidade1 = new Entidade();        
         List lista = dao1.findAll (Entidade.class);
         jComboBox5.removeAllItems();
         for (int i = 0; i < lista.size(); i++) 
         {
             entidade1 = (Entidade) lista.get(i);
             jComboBox5.addItem(entidade1);           
         }
     }

Primeiro remova todos os itens da JComboBox, depois no proprio for adicione os itens a ele, não precisa criae outra lista pra isso.

No seu codigo voce está adicionado a ent apenas o prmeiro objeto da lista, porque ele esta fora do for.
Depois voce remove todos os itens da JComboBox. Em seguida você faz um for ( de um unico item) e adiciona o (unico) item.
Coloca o codigo acima que deve fucionar!

P

Ok! Obrigado! sumiram-se os erros…
porém, não estou conseguindo chamar o método…
Dentro do meu JFrame tenho um JPanel e ai os jComboBox’s, por exemplo quero que a consulta apareça no jComboBox5, não seria necessário apenas chamar:

private void jComboBox5_mouseClicked(MouseEvent e) 
    {
        combo();       
    }

e apareceria a lista no combo???

mister_m

Olá pcjardim,

A menos que você esteja “brincando” com Swing, você não quer usar uma abstração tão alto nível como o Hibernate e continuar mexendo com os models, listeners e afins do Swing no braço. Você deve usar um framework de binding, como o genesis, para facilitar o seu trabalho.

Por exemplo, ao invés de fazer algo braçal, você pode popular o combo por simplesmente fazer algo como:

E definindo na sua combobox que propriedades exibir. Mais explicações sobre isso você pode encontrar na documentação do genesis.

P

Caro mister_m na verdade não estou “brincando” mas estou “ralando”!!! he he!! é que estou vendo essa matéria e ai vou praticando por aki… Estou usando o JDeveloper!!! criei os JComboBox nele, e ai estou tentando povoá-lo com os dados do BD, usando hibernate, porém as vezes fico meio perdido… No meu enteder eu faria o método e o invocaria no JComboBox, não é possível da forma que estou tentando?? ficaria muito complicado??? de qualquer forma, obrigado pela dica da “documentação do genesis” vou estudá-la… se puder ajudar alguma coisa por hora… eu agradeço também!!!

mister_m

Ola pcjardim,

Funciona voce operar direto em cima do JComboBox, mas assim como voce nao vai ficar conectando no banco de dados e rodando JDBC nu e cru em cima dele, nao faz o menor sentido ficar mexendo com listerers, models e afins pra ficar populando um JComboBox ou qualquer componente Swing. Voce deve usar uma solucao + alto nivel pra isso.

P

Pessoal! por favor… alguém me ajude!! eu sei que preciso estudar… e já que estou usando hibernate… também usar “genesis” por exemplo… mas no momento eu só quero saber uma coisa… se alguém puder me ajudar…
já postei acima os códigos:

public List findAll(Class clazz) {
também

protected List listar(Class clazz) {
esse método que o eliasn corrigiu:

public void combo() 
      {
          
          DAO dao1 = new DAO();
          Entidade entidade1 = new Entidade();        
          List lista = dao1.findAll (Entidade.class);
          jComboBox5.removeAllItems();
          for (int i = 0; i < lista.size(); i++) 
          {
              entidade1 = (Entidade) lista.get(i);
              jComboBox5.addItem(entidade1);           
          }
      }

ai quero que aparece no meu jComboBox5 os dados da tabela “entidade”, porém não esta mostrando nada…

ja chamei aqui:

private void jComboBox5_actionPerformed(ActionEvent e) 
   {
         combo();
    }

até aqui fiz um teste… e acredito que não seria mesmo p/ mostrar ou seja, só qdo clicasse… então, tb não deu certo…

private void jComboBox5_mouseClicked(MouseEvent e) { combo () }

o botão foi criado assim:

private JComboBox jComboBox5 = new JComboBox();

clicando e arrastando, tentei passar: “combo();” na criação, mas tb não consegui… O que teria que fazer pra esse bentido aparecer…???

P

Oi! Alguém pode me dar uma força ai pessoal!!!???

P

Ola! estou indo por algum caminho muito errado??

Criado 13 de novembro de 2006
Ultima resposta 16 de nov. de 2006
Respostas 8
Participantes 3