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.");
}
}
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.