0

私がしていることは、動的ドロップダウンリスト(jcombobox)を作成していることです。2番目のコンボックスで問題に直面しています。list1秒から名前を選択するたびに。リストにはその名前が表示されます。最初のリストには問題ありませんが、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 に答える