Item da combo, existe solução?

Olá galera,

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;
}

Abs.

// 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.

Att,

Sannon

Perfeita esta solução hein, muito prática.

Gostei muito. Só me ficou uma duvida, o que o método “getListaCidade” retorna?

Pode ser algo como…

public static Vector<Cidade> getListaCidade()