我从sql数据创建了一个JCombobox。在我从组合框中删除项目后,该项目仍然存在,直到我再次重新启动应用程序?
我在循环中使用additem方法将项目添加到组合框中,我看到人们使用了数据模型,但我发现这很容易。'
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。抱歉编码风格很差,还在学习吗?)
答案 0 :(得分:4)
mainFrame mf = new mainFrame();
mf.fillUserCombo();
不要创建新的mainframe()
对象。这个对象只是坐在记忆中,因为你似乎没有用它做任何事情。
我见过人们使用过数据模型,但我发现这很容易。
您已经看过这段代码,因为它是解决问题的正确方法。您只需要参考模型。然后删除所有项目并将新项目添加到模型中。或者您创建一个新模型并将模型添加到组合框中。
为了重新加载数据,完全没有理由创建一个完整的新框架!
答案 1 :(得分:0)
我在堆栈溢出的另一个问题上找到了解决方案。我觉得在那里搜索过吗?在我问这里之前它是
private void delUesrBtnActionPerformed(java.awt.event.ActionEvent evt) {
user u = new user();
String user =userCombo.getSelectedItem().toString();
u.delUser(user);
userCombo.removeAllItems();
fillUserCombo();
}
我使用removeAllItems()删除所有项目,然后再次调用fillUserCombo()。
camickr之前也提到过,但我不确定该怎么做。