Colocando Objeto dentro de um JComboBox

5 respostas
Alchemist

Opa tudo bem ai pessoal ?

Estou com uma duvida besta, gostaria que alguem me ajuda-se!!

Tenho este pojo

class Instituicao{
      int ID;
      String nome;

//Aqui tem os metodos get e set dos atributos

}

Eu instancio a classe instituicao e jogo um id e um nome dentro do objeto!!

Eu queria jogar este objeto em um JComboBox, onde só aparece-se o Nome e o id fica-se oculto onde eu só vou usar ele quando eu pegar o item devolta. tentei com o metodo addItem porem ele me mostra só o endereço do objeto !!

Alguma dica ?

5 Respostas

Felagund

Crie seu proprio combo e coloque um campo para armazenar os objetos.

[]'s

R

Você preencheu sua JComboBox através de addItem()? Caso positivo, a JComboBox vai chamar o método toString() dos objetos que você inseriu para determinar o que deve ser exibido. Se você precisar de um comportamento diferente desse, uma saída é seguir a sugestão do Felagund e criar sua própria implementação de ComboBoxModel.

http://java.sun.com/javase/6/docs/api/javax/swing/ComboBoxModel.html

juniorribeiro

Tenta fazer o seguinte,

Instituicao a = new Instituicao();
		a.setID(1);
		a.setNome("Unioeste");

		Instituicao b = new Instituicao();
		b.setID(2);
		b.setNome("Unijava");

		String aux[] = {a.getNome(),b.getNome()};

No seu Combo você faz assim:

ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(new String[] {aux[0],aux[1]});

É claro que, se tiver varias instituições, você deve fazer um “for” pra percorrer o vetor…
Espero ter ajudado. flw

Alchemist

Então pessoal desculpa a demora mais eu já tinha achado uma solução bem legal;

Esta aqui o link :

http://www.guj.com.br/posts/list/75013.java

dtybel
Primeiro passo é criar a classe no seu projeto //Crie uma classe com o seguinte código
public class ComboItem{
   private int id;
   private String label;

   public ComboItem(int id, String label)
   {
       this.id = id;
       this.label = label;
    }

    //getter and setter
    @Override
   public String toString()
   {
      return this.label;
    }

public Integer getId(){
    return this.id;
}

Essa classe irá criar os objetos como combos para armazenar

// Popular jcombo
Pessoas oPessoa = new Pessoas();

        ResultSet rs = null;
        try {
            rs = oPessoa.getConsultar();
        } catch (SQLException ex) {
            Logger.getLogger(FReunir.class.getName()).log(Level.SEVERE, null, ex);
        }
        jComboBoxCodPessoa.removeAllItems();


        try {
            while (rs.next()) {
            jComboBoxCodPessoa.addItem(new ComboItem(rs.getInt(1),rs.getString(2)) );

            }

           jComboBoxCodPessoa.updateUI();

        } catch (SQLException ex) {
            Logger.getLogger(FReunir.class.getName()).log(Level.SEVERE, null, ex);
        }
// Pegar item do jcombobox selecionado:
ConvidadosPK oConvidado = new ConvidadosPK();
        ComboItem oItem = (ComboItem)jComboBoxCodPessoa.getSelectedItem(); //Pega o codPessoa
        oConvidado.setCodPessoa(oItem.getId());
        oConvidado.setCodReuniao(1);
        oConvidado.setCadastrar();
        try {
            oConvidado.getConsultar();
        } catch (SQLException ex) {
            Logger.getLogger(FReunir.class.getName()).log(Level.SEVERE, null, ex);
        }

Minha classe pessoas é uma classe normal feita pelo netbeans, mas você pode fazer manualmente também.
Espero ter ajudado.

Douglas Tybel

Criado 2 de julho de 2009
Ultima resposta 24 de nov. de 2009
Respostas 5
Participantes 5