Comboboxes dependentes Cidade-Estado no Java/SQL

14/04/2024

0

Estou tentando criar dois comboboxes diferentes mas não estou conseguindo identificar o erro.
Não carrega o combobox da cidade. Verifiquei a conexão e consulta SQL e está funcionando. As cidades isoladamente são carregadas. Seguem os códigos que utilizei (lembrando que os modelos master/sample não sei o que lá não existem mais no Netbeans:

Primeiro arquivo:

package model.bean;

public class Cidade {

private int IdCidade;
private String NomeCidade;
private int IdUf;

public int getIdCidade() {
return IdCidade;
}

public void setIdCidade(int IdCidade) {
this.IdCidade = IdCidade;
}

public String getNomeCidade() {
return NomeCidade;
}

public void setNomeCidade(String NomeCidade) {
this.NomeCidade = NomeCidade;
}

public int getIdUf() {
return IdUf;
}

public void setIdUf(int IdUf) {
this.IdUf = IdUf;
}

}

Segundo arquivo:

package model.dao;

import connection.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.bean.Cidade;

public class CidadeDAO {


public List<Cidade> ListarCidades(String sql) {

List<Cidade> lista = new ArrayList<>();

try {

Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
stmt = con.prepareStatement(sql);

ResultSet rs = stmt.executeQuery();

if(rs != null) {

while(rs.next()) {

Cidade c = new Cidade();
c.setIdCidade(rs.getInt(1));
c.setNomeCidade(rs.getString(3));
c.setIdUf(rs.getInt(5));

lista.add(c);

}
}

return lista;

} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

}

Terceiro arquivo:

package model.control;

import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import model.bean.Cidade;
import model.dao.CidadeDAO;

public class CidadeControl {


public DefaultComboBoxModel listarCidades(String uf){

CidadeDAO cdao = new CidadeDAO();

String sql = "SELECT c.Id, c.Nome, c.Uf, c.IdUf FROM tb_municipio c INNER JOIN tb_estado e ON c.IdUf = e.CodigoUf "
+ "WHERE e.Uf ='"+uf+"'";

System.out.println(sql);

DefaultComboBoxModel modelo = new DefaultComboBoxModel();

List<Cidade> lista = new ArrayList();

try {

lista = cdao.ListarCidades(sql);

for(Cidade c : lista) {

modelo.addElement(c.getNomeCidade());

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Erro ao carregar Cidades.", "Erro", JOptionPane.ERROR_MESSAGE);

}
return modelo;
}

Códigos do Frame:


private void PreencherComboEstado() {

EstadoControl control = new EstadoControl();
comboboxestado.setModel(control.listarUf());

}

private void PreencherComboCidade(String uf){

CidadeControl control = new CidadeControl();
comboboxmunicipio.setModel(control.listarCidades(uf));

}


private void comboboxestadoItemStateChanged(java.awt.event.ItemEvent evt) {

String uf = (String) comboboxestado.getSelectedItem();
PreencherComboCidade(uf);


}
Rogerio

Rogerio

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar