Olá a todos.
Venho mais uma vez pedir ajuda em uma questão que já pesquisei, mas não encontrei uma solução para isso.
Tenho duas Jcombobox (estado, cidade), onde as duas estão funcionando perfeitamente, quando clico na Jcombobox Estado, já habilita na Jcombobox Cidade, as cidades correspondentes a esse estado. Tenho duas tabelas no banco de dados, ambas com a relação dos estados e cidades. O cadastro de clientes em que essas Jcombobox estão, já está funcionando e salvando os dados no banco. Eu uso o PostgreSql e Netbeans para criar o projeto.
O problema que notei é que, ao trabalhar com a opção do cliente (salvar novo ou editar), os Jcombobox do Estado e Cidade ficam com as opções selecionadas anteriormente, não limpam os campos. E ao iniciar a tela já aparece a primeira sigla do primeiro Estado (AC) e a primeira cidade desse Estado.
Então, gostaria que ao iniciar a tela, apareça a palavra “Selecione” no lugar da sigla e cidade inicial. E que ao limpar os campos, voltasse a aparecer a palavra “Selecione” novamente, no lugar da sigla do estado e cidade selecionada anteriormente.
EstadoDAO.java
public List<TabelaEstado> listarEstado(String sql) { List<TabelaEstado> lista = new ArrayList<>(); conecta.conexao(); try { PreparedStatement pst = conecta.con.prepareStatement(sql); ResultSet rs = pst.executeQuery(); if (rs != null) { while (rs.next()) { TabelaEstado te = new TabelaEstado(); te.setId(rs.getInt(1)); te.setNome(rs.getString(2)); te.setUf(rs.getString(3)); lista.add(te); } } return lista; } catch (SQLException ex) { ex.printStackTrace(); } conecta.desconecta(); return null; }
CidadeDAO.java
public List<TabelaCidade> listarCidade(String sql) { List<TabelaCidade> lista = new ArrayList<>(); conecta.conexao(); try { PreparedStatement pst = conecta.con.prepareStatement(sql); ResultSet rs = pst.executeQuery(); if (rs != null) { while (rs.next()) { TabelaCidade tc = new TabelaCidade(); tc.setId(rs.getInt(1)); tc.setNome(rs.getString(2)); tc.setEstado(rs.getInt(3)); lista.add(tc); } } return lista; } catch (SQLException ex) { ex.printStackTrace(); } conecta.desconecta(); return null; }
TabelaEstado.java
public DefaultComboBoxModel listarEstado() { TabelaEstadoDAO tedao = new TabelaEstadoDAO(); String sql = "SELECT * FROM estado ORDER BY uf"; DefaultComboBoxModel modelo = new DefaultComboBoxModel(); List<TabelaEstado> lista = new ArrayList<>(); try { modelo.removeAllElements(); lista = tedao.listarEstado(sql); for(TabelaEstado te : lista){ modelo.addElement(te.getUf()); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Erro ao listar Estados.\nErro: " + ex); modelo.removeAllElements(); } return modelo; }
TabelaCidade.java
public DefaultComboBoxModel listarCidade(String estado) { TabelaCidadeDAO tcdao = new TabelaCidadeDAO(); String sql = "SELECT c.id, c.nome, c.estado FROM cidade c, estado e WHERE c.estado = e.id AND e.uf = '" + estado + "' ORDER BY c.nome"; DefaultComboBoxModel modelo = new DefaultComboBoxModel(); List<TabelaCidade> lista = new ArrayList<>(); try { modelo.removeAllElements(); lista = tcdao.listarCidade(sql); for (TabelaCidade tc : lista) { modelo.addElement(tc.getNome()); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Erro ao listar Cidades.\nErro: " + ex); modelo.removeAllElements(); } return modelo; }