JCOMBOBOX 内的重复值

Posted

技术标签:

【中文标题】JCOMBOBOX 内的重复值【英文标题】:Repeating Values inside JCOMBOBOX 【发布时间】:2013-12-16 13:21:27 【问题描述】:

我正在尝试更新 JComboBox 中的值,但问题是当我添加或删除一个值时,JComboBox 中的所有名称都重复了我该如何解决这个问题?我尝试在连接关闭后放置它,但它不起作用

这是我的代码:

  private void cmbNamesPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt)                                                       

  try

     String tmp=(String)cmbNames.getSelectedItem();    
     String sql="SELECT * FROM Account WHERE Fname=?";
     pst=conn.prepareStatement(sql);
     pst.setString(1,tmp);
     rs=pst.executeQuery();

     if(rs.next())              
          String add1=rs.getString("ID");
          txtID.setText(add1);              
          String add2=rs.getString("Fname");
          txtFirst.setText(add2);              
          String add3=rs.getString("Lname");
          txtLast.setText(add3);              
          String add4=rs.getString("Username");
          txtUser.setText(add4);            
          String add5=rs.getString("Password");
          txtPass.setText(add5);            
          cmdUpdate.setEnabled(true);
          cmdDelete.setEnabled(true);
          cmdAdd.setEnabled(false);              
                  
            
    catch(SQLException e)
    JOptionPane.showMessageDialog(null,e);     
    

这是我在 Names() 中使用的代码:

     private void Names()

      try
        String sql="Select fname from account";
        pst=conn.prepareStatement(sql);
        rs=pst.executeQuery();

        while(rs.next())
            String name=rs.getString("fname");
            cmbNames.addItem(name);

        
        rs.close();
         pst.close(); 
    

    catch(SQLException e)
         JOptionPane.showMessageDialog(null,e); 
    
    finally
     try
         rs.close();
         pst.close();

     
     catch(SQLException e)
           JOptionPane.showMessageDialog(null,e); 
     
 


【问题讨论】:

忘记从内部 JComboBoxes 事件 PopupMenuWillBecomeInvisible 调用 JDBC, 【参考方案1】:

您从数据库中的更新添加了来自查询的项目。每次您运行它时,它只会继续添加项目。在运行更新之前清除组合框。

例如,在遍历结果集之前添加这一行。

cmbNames.removeAllItems();

【讨论】:

以上是关于JCOMBOBOX 内的重复值的主要内容,如果未能解决你的问题,请参考以下文章

从数据库中获取值后如何清除 jComboBox

如何在 Mysql 数据库中插入 jcombobox 值

怎样取JComboBox中的值?

在Jtable单元格中单击JComboBox时调用ActionPerformed

如何更改焦点 JComboBox 的突出显示颜色

关于JComboBox和JSpinner的问题