我其实是想实现JComboBox的动态更新。下面是c_or_in_class的监听器。c_or_in_class和c_or_in_proName都是JComboBox
- Java code
class Classify implements ActionListener { public void actionPerformed(ActionEvent e) { try{ String CLASS=String.valueOf(c_or_in_class.getSelectedItem()); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库课程设计","sa","123"); Statement stmt=con.createStatement(); String SQL="SELECT distinct product_name FROM Product WHERE product_class='"+CLASS+"'"; System.out.println(SQL); ResultSet rs=stmt.executeQuery(SQL); while(rs.next()){ c_or_in_proName.removeAllItems(); //如果有这条语句下拉列表里就只有一个Item c_or_in_proName.addItem(rs.getString(1)); }}catch(Exception ex){} } }
我想让每次选择不同内容出来的都是他所对应的内容。但如果只是c_or_in_proName.addItem(rs.getString(1));
他会让下拉列表的选项一直增加,就有了很多重复的选项,但如果加了c_or_in_proName.removeAllItems(); 每次c_or_in_proName里出来的就只有一项了。
谁能帮帮我啊~~~谢谢各位大哥啦!!
PS:我不会用ComboBoxModel来刷新。。。如果能够详细讲讲这个就感激不尽了!!
------解决方案--------------------
- Java code
class Classify implements ActionListener { public void actionPerformed(ActionEvent e) { try{ String CLASS=String.valueOf(c_or_in_class.getSelectedItem()); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库课程设计","sa","123"); Statement stmt=con.createStatement(); String SQL="SELECT distinct product_name FROM Product WHERE product_class='"+CLASS+"'"; System.out.println(SQL); ResultSet rs=stmt.executeQuery(SQL); c_or_in_proName.removeAllItems(); //在循环外面先移除所有选项 while(rs.next()){ c_or_in_proName.addItem(rs.getString(1)); }}catch(Exception ex){} } }