Problema com jcombobox - setSelectedItem(object)

estou tendo problemas em usar a funcao setSelectedItem()

eu tenho um componente JComboBox onde ele tem uma lista de cidades, seguindo o código:

List<Cidade> o = Cidade.pegarDados(); jCit.removeAllItems(); for (Cidade t : o) { jCit.addItem(t); } jCit.setRenderer(new MeuComboBox(Cidade.pegarListaDesc(o), jCit.getRenderer()));
o setRenderer eu apenas uso para arrumar uma questão de aparência e tooltips para mudarem conforme o item com mouse em cima e exibir o estado.

O problema é quando eu quero selecionar através de um objeto (Cidade no caso) enviado pela função, deveria selecionar a cidade correspondente na função, mas no caso ele não faz o que deveria ser proposto…
ex.:

jCit.setSelectedItem(algumaCidade);

atualmente eu estou resolvendo o problema com treco de código ligeiramente pequeno:

private void selecionarCidade(Cidade cidade) { for(int i = 0;i<jCit.getItemCount();i++){ Cidade cid = (Cidade) jCit.getItemAt(i); if(cid.getId()==cidade.getId()){ jCit.setSelectedIndex(i); return; } } }
mas eu tenho mais de 20 combobox num formulário, e não queria repetir esse código repetidas vezes para solucionar o problema, alguém sabe como resolver o erro no setSelectedItem()?

bem, resolvi na base gambi, irei disponibilizar o código caso outras pessoas tenham a ter o mesmo problema que o meu:

public JComboBox arrumarCombo(JComboBox combo, Object objeto, String nomeMetodo) { try { Method method = objeto.getClass().getMethod(nomeMetodo, new Class[0]); Object valor = method.invoke(objeto, new Object[0]); boolean isInteger = false; int valorId = 0; if (valor instanceof Integer) { isInteger = true; valorId = (Integer) valor; } if (isInteger) { for (int i = 0; i < combo.getItemCount(); i++) { method = combo.getItemAt(i).getClass().getMethod(nomeMetodo, new Class[0]); valor = method.invoke(combo.getItemAt(i), new Object[0]); if (valor instanceof Integer && (Integer) valor == valorId) { combo.setSelectedIndex(i); return combo; } } } } catch (Exception ex) { } return combo; }

basicamente o jcombobox que vc envia para o método tem que ter objetos da mesma classe que o objeto que vc enviou, e o nome do método irá checar se os dados conferem, no caso apenas irá funcionar para inteiros.

se alguém achar algum outro método mais fácil que se aplique a todos os combobox, esteja a vontade de disponibilizar, att.

requer importe a classe: java.lang.reflect.Method

Boa noite galera

Estou fazendo um codigo para pegar do BD um resultado de um select de UF.

Na hora que tenho jogar o resultado para ser listar em um comboBox, estou tendo problema, pois não é listado.

Segue abaixo a sequencia que recebe do metodo do select.

UF = cadastroOficina.obterLinhasUF();
this.jCBES.setSelectedItem(UF);

Na primeira linha faço a consulta ao BD, na segunda eu acho que deveria esta inserindo no ComboBox, para o cliente selecionar a UF.

O que faço para resolver???

a variável UF é uma lista?

Pelo que eu li no seu problema, você não está conseguindo adicionar os objetos UF no combobox. No meu primeiro código mostra como adicionar os objetos num combobox.

o setSelectedItem serve para selecionar algum item no comboBox e não para add.

att.

Oi, Boa noite,

Eu pesquisei aqui, e consegui fazer da seguinte forma:

uf = cadastroOficina.obterLinhasUF(); DefaultComboBoxModel modelo = new DefaultComboBoxModel(); for(int i = 1; i &lt; uf.size(); i++){ String ufS =&quot;UF&quot;; modelo.addElement(ufS); modelo.addElement(uf.elementAt(i)); } jCBES.setModel(modelo);

Se alguem nao entendeu posta ai que explico.