我从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回答 –