Quando eu trabalhava com VB existia uma propriedade chamada item data na combo, onde eu poderia adicionar os ids dos itens listados na combo.
O itemData não era visivel aos usuarios, listando na combo somente a descrição dos registros das tabelas… mas eu tinha acesso aos ids para consulta, salvamento, etc, quando selecionado um item…
Gostaria de saber se no JComboBox existe algum recurso semelhante…
Não sei se fui claro na explicação, mas de qualquer forma agradeço a ajuda.
Em um JComboBox você pode adicionar objetos em vez de strings, mas o que é mostrado é o resultado do método public String toString(), e para localizar um item em um combo é necessário redefinir o método public boolean equals(). Exemplo para um combo de estados:
classEstado{privateStringnome,sigla;publicEstado(Stringnome,Stringsigla){this.nome=nome;this.sigla=sigla;}publicStringtoString(){returnsigla;}// isto é o que será mostrado no combo// se quiser achar o estado no combo pela siglapublicbooleanequals(Objectobj){returnobj==this||objinstanceofEstado&&((Estado)obj).sigla.equals(this.sigla);}}
Se você não puder redefinir o método toString, você pode fazer o seguinte:
Crio uma classe que contém o objeto em si, e sua representação string;
Adiciono instäncias dessa classe (no exemplo abaixo, CidadeItemCombo) ao JComboBox. Exemplo:
classCidade{privateintcodigo;privateStringnome;...getters&setters...}classCidadeItemCombo{privateCidadecidade;// digamos que você queira mostrar "02345: São José da Barra" no combo...publicStringtoString(){returnString.format("%05",codigo)+": "+nome;}}
J
Joaozava
Ok, obrigado thingol!
Mas agora me veio outra dúvida…
Tem como eu adicionar em uma JComboBox um ArrayList ou algo do tipo?
Por exemplo:
Tenho um método que retorna um List dos objetos que desejo adicionar na combo:
Listlista=newArrayList();try{strSql=("SELECT id, descricao FROM tbldepartamentos ORDER BY descricao");st=conn.prepareStatement(strSql);rs=st.executeQuery();while(rs.next()){Departamentosd=newDepartamentos(newInteger(rs.getInt("id")),rs.getString("descricao"));lista.addItem(d);}...returnlista;
Existe alguma forma de eu adicionar essa list completa no JComboBox? pra não fazer um novo loop…