我從sql數據創建JCombobox。而我從組合框刪除項目後,該項目仍然保持,直到我再次重新啓動應用程序?Java刷新JCombobox
我在循環中使用additem方法來添加項目到組合框,我看過人們使用datamodel,但我覺得這很容易。
在mainfarme.java代碼
public mainFrame()
{
initComponents();
fillUserCombo();
}
public void fillUserCombo()
{
try {
st=con.createStatement();
rs=st.executeQuery("SELECT `username` FROM `users` WHERE 1");
while(rs.next())
{
username=rs.getString(1);
userCombo.addItem(username);
}
}
catch (SQLException ex)
{
}
}
private void delUesrBtnActionPerformed(java.awt.event.ActionEvent evt) {
user u = new user();
String user =userCombo.getSelectedItem().toString();
u.delUser(user);
}
代碼user.java
public void delUser(String user)
{
try
{
this.con=db.getCon();
// System.out.println(user);
String sql="DELETE FROM `users` where (username=?)";
ps=(PreparedStatement)con.prepareStatement(sql);
ps.setString(1,user);
ps.execute();
JOptionPane.showMessageDialog(null,"User Deleted");
mainFrame mf = new mainFrame();
mf.fillUserCombo();
mf.revalidate();
mf.repaint();
}
catch (SQLException ex)
{
Logger.getLogger(user.class.getName()).log(Level.SEVERE, null, ex);
}
}
這裏按下刪除按鈕後deluser從數據庫中刪除用戶,但在此之後,組合框項目(用戶名)仍然在那裏。
我嘗試再次調用fillusercombo方法,認爲它會重新填充combofox但其相同,也嘗試了repaint()方法。
如何刷新組合框? (PS。對不起編碼不佳的風格,還在學習?)
要刪除數據後打開新窗口? 'mainFrame mf = new mainFrame(); mf.fillUserCombo();'??相反,創建mainFrame的新對象,你應該調用前面的'mainFrame'實例的'fillUserCombo()' –
no。 fillusercombo()在大型機類中是這樣的。 – mhrzn
創建mainFrame的新對象是問題。請參閱camickr回答 –