Galera,
Descobri como faz, vou tentar explicar com um exemplo pra ver se facilita a vida de muita gente, já que este é um tópico bastante procurado e todas as respostas obtidas anteriormente não ajudaram muito.
O que eu vou apresentar aqui foi a maneira que eu consegui fazer funcionar, pode ser que não seja a melhor… mas funciona… de qualquer forma o tópico está aberto para novas opiniões.
Vamos lá:
Primeiro eu criei uma classe chamada combo, note que existe um método “public String toString()”, isso é muito importante, é ele que retorna a string para preencher o combobox:
class combo {
private String value;
private int key;
public combo(int key, String value) {
this.key=key;
this.value=value;
}
public String toString() {
return value;
}
public int getKey() {
return key;
}
}
Muito bem, depois de criar a classe acima vamos trabalhar na interface, no meu JFrame eu criei a variável:
private ComboBoxModel model;
E no próprio constructor do meu JFrame eu criei um Vector onde serão adicionados os itens e utilizei a variável model para popular o combobox:
ResultSet rs = stmt.executeQuery("SELECT codigo, nome FROM clientes ORDER BY nome");
Vector v = new Vector();
while (rs.next()) {
combo cmb = new combo(rs.getInt("codigo"), rs.getString("nome"));
v.add(cmb);
}
model = new DefaultComboBoxModel(v);
jComboBox1.setModel(model); //Relaciona o modelo com o combobox, fazendo com que os itens do modelo sejam carregados no combobox
Bom, depois disso se você precisar saber qual o código do item selecionado pelo usuário no combobox basta utilizar:
//Recebe o item selecionado no combobox como um Object
Object obj = jComboBox1.getSelectedItem();
//Mostra o código selecionado no combobox em um label, tem que fazer um cast para o tipo do objeto recebido na variável obj (acima)
jLabel1.setText( String.valueOf(((combo) obj).getKey()) );
Bom, era isso, espero ter ajudado.