Como vc faria pra pegar o ID de uma combo de estado e de uma combo de cidade por exemplo e gravar esse ID no cadastro do cliente?
Na web é mole pq vc tem o campo ID que pode ser numero/string, mas isso n tem na app desktop, somente o indice no máximo (0,1,2,3) que n é seguro, já que os itens podem mudar de posição e podem vir de uma tabela do banco, então não tem como fazer um ENUM dos itens todos.
Então como seria o processo de captura do item certo para gravar no banco e depois pegar esse indice e jogar pra combo para que ela posicione no lugar certo.
Lembrando que os itens podem mudar de posição e podem ser mais de 100 itens, então não vale a pena criar um switch assim:
switch (arg) {
case 0: value=“Single”; break;
case 1: value=“Married”; break;
case 2: value=“Separated”; break;
case 3: value=“Divorced”; break;
}
// Cria combo
JComboBox combo = new JComboBox();
// Cria e alimenta o ComboModel com a lista de objetos do tipo Cidade, por exemplo.
DefaultComboBoxModel comboModel = new DefaultComboBoxModel( CidadesQuery.getListaCidade() );
// Associa model ao combo
combo.setModel( comboModel );
// Retorna o objeto selecionado
Cidade cidade = (Cidade)combo.getSelectedItem();
A classe de cidades seria algo como:
public class Cidade implements Serializable {
private Integer id;
private String nome;
/** default constructor */
public Cidade () {
}
public Integer getId() {
return this.id;
}
protected void setId(Integer id) {
this.id = id;
}
public String getNome() {
return this.nome;
}
public void setNome(String n) {
this.nome= n;
}
// IMPORTANTE: O combo irá exibir o que o seu objeto retornar o toString()
public String toString() {
return getNome();
}
Você não lida com o índice do item na combo, mas sim com o objeto. Quando você ler e setar o objeto na combobox, ele já irá aparecer selecionado. Isso ajuda muito quando se usa o Hibernate junto.