Listar cidades através do estado

1 resposta Resolvido
javaswing
A

Ao selecionar um UF de um combo box a interface deve mostrar no combo box de cidade todas as cidades referentes a esse UF. No meu caso quando eu seleciono um UF pela primeira vez ele mostra todas as cidades, porém ao selecionar outro UF ele apenas adiciona novas cidades mantendo os valores do UF anterior.

Action do UF

private void tfUfActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:

        ClientesDAO repositorio = new ClientesDAO();

        String estado = tfUf.getSelectedItem().toString();

        ArrayList<Cidade> estados = repositorio.listarCidadesPorUF(estado);

        for (Cidade estado1 : estados) {
            
            tfCidades.addItem(estado1.getCidade());

        }

    }

Método de Busca por UF

public ArrayList<Cidade> listarCidadesPorUF(String estado) {

        try {
            String sql = "select * from cidades where Estado = ?";

            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, estado);
            ps.execute();

            ResultSet resultado = ps.getResultSet();

            ArrayList<Cidade> cidades = new ArrayList<>();

            while (resultado.next()) {
                Cidade estado1 = new Cidade();
                estado1.setCidade(resultado.getString("cidade"));
                estado1.setEstado(resultado.getString("estado"));
                cidades.add(estado1);
            

            }

            return cidades;

        } catch (Exception e) {

            JOptionPane.showMessageDialog(null, "Excpetion -> " + e);

            return null;
        }
    }

1 Resposta

P
Solucao aceita

Estás sempre a adicionar items sem limpar a combo box.

tfCidades.removeAllItems();

ArrayList<Cidade> estados = repositorio.listarCidadesPorUF(estado); 

for (Cidade estado1 : estados) { 
    tfCidades.addItem(estado1.getCidade()); 
}
Criado 31 de agosto de 2021
Ultima resposta 31 de ago. de 2021
Respostas 1
Participantes 2