[RESOLVIDO ]Como pegar o "ValueMember" do combobox?

Eu estou vindo da linguagem do C# onde em um depois de passada uma consulta para um combobox , visualmente aparecia dentro dele apenas o nome do cliente, mas por meio de código eu conseguia pegar a ID desse cliente dentro do banco de dados. Não estou conseguindo isso em Java. Poderiam me ajudar?

Segue o código:

Minha classe

public class Cliente {
    
    public Object id;
    public Object nome;
    
    public Cliente (Object id,Object nome)
    {
        this.id=id;
        this.nome=nome;
    }
    
    public String toString()
    {
        return nome.toString();
    }

Dentro do método PreencherComboBox, passo as instruções para jogar em um Array e adicionar cada item no combo

String id =rs.getString(1);
String nome =rs.getString(2); 
Cliente c = new Cliente(id, nome);
ArrayList<Cliente> cli=new ArrayList<Cliente>();
cli.add(c);
cmbClientes.addItem(c.toString());

Ao selecionar um Item do combo, jogo o comando para pegar a ID do Objeto

Cliente c = (Cliente)cmbClientes.getSelectedItem();
lblID.setText(c.id.toString());

Porém dá o erro:

“Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to supporthlp.Cliente”

O que estou fazendo de errado?

Crie um DefaultComboBoxModel() que permite manipular de forma mais eficiente Objetos dentro de um ComboBox, funciona da seguinte forma:

DefaultComboBoxModel comboModel = new DefaultComboBoxModel();
ArrayList<Cliente> cli= new DAOCliente().getListaCliente(); // Exemplo de get da lista do Cliente

for (Cliente client : cli){
    comboModel.addElement(client);
}
cmbClientes.setModel(comboModel);

Exemplo de SelectItem:

Cliente clienteSelecionado = new DAOCliente().getClienteSelecionado(); // Exemplo de get do Cliente
cmbClientes.getModel().setSelectedItem(clienteSelecionado); // selecionar item

Obrigado pela resposta! Deu certo aqui. Um abraço e desculpa a “nubisse”.