2013-12-16 28 views
0

我在嘗試更新JComboBox中的值,但問題是當我添加或刪除值時,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);  
    } 
} 

,這裏是我在名稱中使用的代碼():

 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); 
    } 
} 

} 
+0

忘記了要從內部JComboBoxes事件調用JDBC PopupMenuWillBecomeInvisible, – mKorbel

回答

3

你從數據庫更新添加來自查詢的項目。每次運行時,它都會繼續添加項目。在運行更新之前清除組合框。

例如,在循環遍歷結果集之前添加此行。

cmbNames.removeAllItems();