Como pegar Id no JcomboBox

1 resposta
Marcio_Tostes

Prezados, boa noite.

Tenho uma aplicação desktop e nela possui um JcomboBox que é carregado com a cidade e cep existentes no banco, minha duvida é a seguinte, como faço para pegar o Id da cidade pelo JcomboBox?

meu procedimento para carregar o box é

private void carregaBoxCidade(){

try

{

Connection con = Conexao.getConnetion();

PreparedStatement pstm;

ResultSet rs;
String sql = "select * from cidade;";

          pstm = con.prepareStatement(sql);                
          rs   = pstm.executeQuery(sql);

          while(rs.next())
          {
                  cbBoxCidades.addItem(rs.getString("nome") +" - "+rs.getString("cep"));
          }
          Conexao.closeConnection(con, pstm, rs);
      }
      catch(SQLException ErroSql)
      {
          JOptionPane.showMessageDialog(null, "Erro ao carregar comboBox com informações do banco.");
      }  
}

1 Resposta

A

Com orientação a objeto.
O combobox pode aceitar uma classe qualquer.
Ex.:

public class Cidade {

    private final int CODIGO;
    private String nome, estado;
    //restante dos atributos

    //construtor usado para fins de exemplo
    public Cidade(int CODIGO, String nome, String estado) {
        this.CODIGO = CODIGO;
        this.nome = nome;
        this.estado = estado;
    }

    public int getCodigo() {
        return CODIGO;
    }

    @Override
    public String toString() {
        return nome + (CODIGO == 0 ? "" : " (" + estado + ")");
    }

    //getter setter e demais métodos a serem implementados
}

Classe de teste:

import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import javax.swing.JComboBox;

public class Crisis extends javax.swing.JFrame {

    JComboBox<Cidade> comboCidade = new JComboBox<>();

    public Crisis() {
        initComponents();
        setLayout(new BorderLayout());
        povoarCombo(new Cidade(0, "Escolha uma cidade", null), new Cidade(1, "Santos", "SP"), new Cidade(2, "Natal", "RN"));
        add(BorderLayout.NORTH, comboCidade);
    }

    private void povoarCombo(Cidade... arrayLabelCombo) {
        //adicionando elementos
        comboCidade.setModel(new javax.swing.DefaultComboBoxModel<>(arrayLabelCombo));
        //monitorando um evento, necessidade questionável pois depende do tipo de implementação
        comboCidade.addItemListener((ItemEvent ie) -> {
            if (ie.getStateChange() == ItemEvent.SELECTED) {
                System.out.println(((Cidade) ie.getItem()).getCodigo());
            }
        });
    }
   //Restante da codificação omitida.
Criado 1 de julho de 2017
Ultima resposta 2 de jul. de 2017
Respostas 1
Participantes 2