jComboBox, só funciona na primeira vez?

Oi,

Quando carrego a classe CadClientes, atualizo o combobox com os EStados, ao selecioncar um estado atualizo o combobox das cidades. Funciona legal, só que funciona uma vez.
Se eu tentar clicar no combobox do estado e selecionar outro estado dá erro ao listar as cidades.

// Classe CadClientes


private ComboBoxmUF mUF, mCidade;

private void formComponentShown(java.awt.event.ComponentEvent evt) {                                    
  lista_Estados(); 
}                                   

private void lista_Estados() {
  try {  
    Tconexao conexao = new Tconexao();
    conexao.conectaBanco();
    jComboBox_UF.removeAllItems();
    String SQL = "select * from Estados order by nome";
    PreparedStatement pstm = conexao.con.prepareStatement(SQL);  
    RS = pstm.executeQuery();
    Vector vetor_Estado = new Vector();  
    while (RS.next()) {
      Combo cmb = new Combo(RS.getInt("CODIGO"), RS.getString("ABREVIATURA"));  
      vetor_Estado.add(cmb);  
    }
    mUF = new DefaultComboBoxmUF(vetor_Estado);  
    jComboBox_UF.setmUF(mUF);   
    conexao.desconectaBanco();
  } catch(Exception e){
      JOptionPane.showMessageDialog(null, "Erro ao listar os estados", "Mensagens", JOptionPane.INFORMATION_MESSAGE);
      System.out.println(e.getMessage());
    }  
}

private void jComboBox_UFActionPerformed(java.awt.event.ActionEvent evt) {
  Object obj = jComboBox_UF.getSelectedItem();
  int codEstado = ((Combo) obj).getKey();       
  String nomeEstado = String.valueOf(((Combo) obj).toString());       
  lista_Cidades(codEstado);
}

private void lista_Cidades(int codEst) {
  try {  
    int vEstado = codEst;
    Tconexao conexao = new Tconexao();
    conexao.conectaBanco();
    jComboBox_Cid.removeAllItems();
    Vector vet_Cidade = new Vector();  
    String SQL = "Select * from cidades left join Estados on cidades.cid_uf = Estados.Codigo WHERE Estados.Codigo = ? order by cidades.cid_nome";
    PreparedStatement pstm = conexao.con.prepareStatement(SQL);  
    pstm.setInt(1, vEstado);  
    System.out.println(SQL);
    RS = pstm.executeQuery();
    while (RS.next()) {
      Combo cmb_Cidade = new Combo(RS.getInt("CIDCODIGO"), RS.getString("CIDNOME"));  
      vet_Cidade.add(cmb_Cidade);  
    }
    mCidade = new DefaultComboBoxmUF(vet_Cidade);  
    jComboBox_Cid.setmUF(mCidade);   
    conexao.desconectaBanco();
    } catch(Exception e){
        JOptionPane.showMessageDialog(null, "Erro ao listar as cidades", "Mensagens", JOptionPane.INFORMATION_MESSAGE);
        System.out.println(e.getMessage());
      }  
  }

Classe Combo

class Combo {  
  private String value;  
  private int key;  

  public Combo(int key, String value) {  
    this.key=key;  
    this.value=value;  
  }

  public String toString() {  
    return value;  
  }  
  public int getKey() {  
    return key;  
  }  
}

Não sei o porque. Mas tirei a linha que remove os itens do combo da cidade e funcionou.