4

我使用下面的编码使用另一个jcombobox向jcombobox添加值,我需要根据在jcombobox1中选择的值将值添加到jcombobox2而不附加值所以有人可以告诉我一种重置或清除组合框的方法选择另一个选项时的值?下面是我的编码,我是 java 和 netbeans 的新手,所以如果有人可以帮助我将不胜感激:)

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/database1", "root", "senura123");
    Statement stat = (Statement) con.createStatement();
    String val=jComboBox1.getSelectedItem().toString();
    String check; String col;
    if ("Vehicles".equals(val)){
        check = "select reg_no from vehicle;";
        col="reg_no";
    }
    else if ("Travel Guides".equals(val)){
        check = "select username from travelguide;";
        col="username";
    }
    else{
        check = "select username from transportofficer";
        col="username";
    }                   
    ResultSet rslt = stat.executeQuery(check);
    while (rslt.next()) {
        jComboBox2.addItem(rslt.getString(col));                               
    }
 }
4

3 回答 3

9

DefaultComboBoxModel.removeAllElements()

清空列表。

于 2012-04-15T06:58:31.887 回答
1

在您的组合框中设置一个模型:

final List<String> values = new ArrayList<String>();

while (rslt.next()) {
  values.add(rslt.getString(col));
}

jComboBox2.setModel(new DefaultComboBoxModel(values.toArray()));

请参阅DefaultComboBoxModel


然而,作为进一步的评论,根据您的查询中涉及多少延迟,您可能希望使用SwingWorker将此工作拆分为 EDT 和后台线程部分。

于 2012-04-15T00:32:21.620 回答
0

通常它发生是因为您有一个与 JComboBox 相关的事件。如果您在 JComboBox 中有控件项可以操作,则可以解决此问题,例如:

jComboBoxExample.addActionListener (new ActionListener () {
   public void actionPerformed (ActionEvent e) {
     do_run ();
   }
});



public void do_run() {
  int n=jComboBoxPerfilDocumentos.getItemCount(); <--THIS IS THE SOLUTION
  if (n> 0) { 
    String x = jComboBoxPerfilDocumentos.getSelectedItem (). ToString ();
  }
}
于 2015-05-29T08:26:57.910 回答