我在做的是,我正在创建动态下拉列表(jcombobox)。我正面临着第二个combox的问题。每当我从list1中选择一个名字的时候。列表显示其名称acc。首先列出那是好的,但是当我再次从列表1中选择一个不同的名称列表2继续显示以前的数据和新的数据... 即时通讯使用函数removeallitems()仍然无法从列表中删除以前的数据Swing Jcombobox
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]);
}
}
}
我在哪里我面临的问题,只给我的计划的一部分......
下一次,请向我们提供格式代码... – brimborium
你为什么你的列表复制到一个数组中?你可以直接在列表中循环'for(String s:districtlist){combo1.addItem(s);}'。删除循环中的removeItem,因为它什么也不做。下次你点击这样的东西时,使用一个调试器。 –
执行查询不应发生在事件调度线程上。长时间运行的任务应该发生在工作者线程上以确保响应式用户界面。看看Oracle网站上的[并发中的摆动](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)教程,了解更多关于 – Robin