Sou iniciante ainda em java e estou com uma dúvida…
Minha ideia é carregar em um combo box apenas os estados cadastrados no sistema. Pois a partir desta seleção vou limitar as cidades conforme o estado selecionado.
A principio minha ideia funcionou em partes, não sei se é certo fazer assim, maas… foi o jeito que consegui sozinho.
Então fiz um teste eu deu pau, o que acontece é que estou pegando um sequence do banco e inserindo como index do combo box para o estado. Só que ai mora o perigo, pois se esta sequencia foi quebrada (deletar um estado), já eraaa… vai dar erro pois esta esperando um index e estou informando outro.
Minha ideia era usar o index como padrão para o where da seleção das cidades… mas acho que não vai dar, alguém tem alguma ideia?
Método para carregar o estado:
public ArrayList CarregarEstados(){
ArrayList<String> Estados = new ArrayList();
ResultSet rs = con.query("SELECT E.COD_ESTADO, E.UF_ESTADO FROM I3_ESTADOS E ORDER BY COD_ESTADO");
Estados.add(0, "SELECIONE O ESTADO");
try {
while(rs.next()){
Estados.add(rs.getInt("cod_estado"), rs.getString("uf_estado"));
}
} catch (SQLException ex) {
Logger.getLogger(Cidades.class.getName()).log(Level.SEVERE, null, ex);
}
return Estados;
}
Instância do combo box:
comboboxEstado = new javax.swing.JComboBox(Cidades.getInstancia().CarregarEstados().toArray());
Consegui…
Tirei do método add do combo box o index, passei apenas a string e ele se “encarregou” de criar os index pra mim (não havia visto que o método aceita apenas a string).
Bom conforme o usuario seleciona o estado o combo box de cidades é alterado…
Ficou assim.
Método do Evento do combo box estado:
private void comboboxEstadoItemStateChanged(java.awt.event.ItemEvent evt) {
comboboxCidade.removeAllItems();
DefaultComboBoxModel model = new DefaultComboBoxModel(Cidades.getInstancia().CarregarCidades(comboboxEstado.getSelectedItem().toString()).toArray());
comboboxCidade.setModel(model);
comboboxCidade.setEnabled(true);
}
Método carregar cidade:
public ArrayList CarregarCidades(String Estado){
Cidades.estado = Estado.toString();
ArrayList<String> Cidades = new ArrayList();
ResultSet rs = con.query("SELECT C.COD_CIDADE, C.DES_CIDADE FROM I3_CIDADES C, I3_ESTADOS E WHERE C.COD_ESTADO = E.COD_ESTADO AND E.UF_ESTADO = '" + Estado + "'");
Cidades.add("...");
try {
while(rs.next()){
Cidades.add(rs.getString("des_cidade"));
}
} catch (SQLException ex) {
Logger.getLogger(Cidades.class.getName()).log(Level.SEVERE, null, ex);
}
return Cidades;
}