JComboBox com Objetos

Boa tarde amigos!

Tenho um ComboBox na aplicação e uma tabela X no banco de dados, vamos supor que esta tabela tenha apenas duas colunas [“codigo”, “descricao”].
Do um loop com while do resultset e vou criando objetos dentro do combobox.

Segue o código da classe para o combobox:

public class comboMultidata {
    private String valor;
    private String texto;

    public comboMultidata(String id, String label) {
        this.valor = id;
        this.texto = label;
    }
    public String getValor() {
        return valor;
    }
    
    @Override
    public String toString() {
        return texto;
    }
}

a parte do código que cria os objetos dentro do combobox:

db.consultar("SELECT codigo, descricao FROM tabela");
while(db.rst.next())
{
    codigo = db.rst.getString("codigo");
    descricao = db.rst.getString("descricao");
    combobox_teste.addItem(new comboMultidata(codigo, descricao));
}

O código para recuperar o id, já que o que aparece no combobox é a descricao:

String combo = ((comboMultidata)combobox_teste.getSelectedItem()).getValor();
JOptionPane.showMessageDialog(null, combo);

OK, OK… agora entra a minha dúvida que estou lutando para encontrar a resposta.
Como eu faço para executar com sucesso o seguinte:

combobox_teste.setSelectedItem("descricaoD"); // descricaoD é o quarto item do combo e no momento, descricaoA está selecionado.

Ou seja, como faço para dar um setSelectedItem? Já que dentro dos parenteses eu colocaria o item, porém como são objetos e não strings, não é da mesma forma.

No aguardo

Uma forma é você recuperar o Model do seu ComboBox e localizar o objeto desejado dentro desse Model.

DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBox.getModel();
for (int i = 0; i < model.getSize(); ++i) {
    ComboMultidata cmd = (ComboMultidata) model.getElementAt (i);
    if (cmd.getTexto().equalsIgnoreCase(....))
        // achou o objeto desejado
}

Outra é você criar um ComboBoxModel onde seja fácil de achar o elemento desejado. Procure por GlazedLists na Internet e veja como resolver esse problema de uma vez por todas.

Esta é simples:

No caso acima vc transforma o ítem selecionado, no ítem que vc quiser, passando no método getItemAt o índice do ítem que vc quiser.

Obrigado amigos! Estava estudando sobre o que me explicaram, por isso a demora.

Para a comunidade, o código então ficaria o seguinte:
OBS.: Supondo que a variável "codigo" é código que desejo encontar no combobox.

DefaultComboBoxModel model = (DefaultComboBoxModel) combobox_teste.getModel();
String valor;
for (int i = 0; i &lt; model.getSize(); ++i)
{
     comboMultidata cmd = (comboMultidata) model.getElementAt (i);
     valor = cmd.getValor();

     if(valor.equals(codigo))
     {
         combobox_teste.setSelectedItem(combobox_teste.getItemAt(i));
     }
}

Então, voltando ao comentário sobre o GlazedLists, dei uma lida sobre o assunto, mas dentro do JComboBox eu não entendi como poderia fazer esse mesmo processo.
Alguém poderia me explicar?
OBS.: Esta forma descrita a cima, com o ComboBoxModel não está sensivelmente grande para este tipo de ação? Não existe alguma outra forma para otimizar este trabalho?

Forte abraço e mais uma vez, Muito Obrigado pela ajuda que já me deram.

Sim, está bem chatinho.

No caso do GlazedLists, você pode criar um ComboBoxModel que é ordenado por alguma chave (usando um SortedList). A seguir, você pode usar o método sortedIndexOf (se não me engano) para poder, a partir de um elemento exemplo, pegar um objeto mais rapidamente que simplesmente ficar percorrendo (argh).

Olá thingol!

Obrigado pela explicação, porém me resta uma dúvida, se poderes me esclarecer.
Seguinte, é tipo um JQuery para Java? Você acha o item com muita facilidade, porém o método para utilização deste adicional seria mais ou menos o seguinte?

Grava dentro do combobox um vetor com índices e descrições, ou seja, o código e o nome. O nome é o que aparece no combobox, o código é o índice de pesquisa para o mesmo… então efetuando uma pesquisa no banco de dados e retornando o código necessário, buscaria pelo código dentro dos índices deste combobox e chamaria o setSelectedItem que retornaria por sua vez não o código e sim… o nome, a descrição propriamente dita.

Não sei se consegui ser claro sobre a minha dúvida. Caso tenha conseguido, seria isto?

abraço.