0

我正在做的是,我正在创建动态下拉列表(jcombobox)。我面临第二个组合框的问题。每当我从 list1 中选择一个名称时,秒。列表显示其名称acc。首先列出没关系,但是当我再次从 list1 中选择不同的名称时,list2 继续显示以前的数据和新数据...我使用函数 removeallitems() 仍然无法从 list2 中删除以前的数据

public void itemStateChanged(ItemEvent e) {
  if (e.getSource() == combo) {
    statename = (String)combo.getSelectedItem();
    try {
      ResultSet rs2 =s.executeQuery("select distinct district_name from district_master where state_code=(select state_code from state_master where state_name='"+statename+"') order by district_name ");
      while(rs2.next()) {  
        districtlist.add(rs2.getString(1));
      }
      list_district  = new String [districtlist.size()];
      districtlist.toArray(list_district);
    } catch(Exception f) {
      f.printStackTrace();
      System.out.println(f);
    }
    combo1.setEnabled(true);
    combo1.removeAllItems();
    for (int i = 0; i < list_district.length; i++) {
      combo1.removeItem(list_district[i]);
      combo1.addItem(list_district[i]);
    }
  }
}

我只给出了我面临问题的程序的一部分......

4

2 回答 2

3

每次运行查询时,您都不会清除您的地区列表。这意味着每次查询时,您都会将先前查询的项目添加到列表中。

尝试这样做。

districtlist.clear();
while(rs2.next())
{
    districtlist.add(rs2.getString(1));

}
于 2012-06-29T12:19:29.050 回答
1

在你的while循环之前,你应该清除你的项目列表:

districtlist.clear();
while(rs2.next()){
  //...
}
于 2012-06-29T12:21:58.740 回答