Java Swing:JTable不';在鼠标单击任何位置之前是否更新?
我只是在编写与数据库(MySQL)交互的应用程序代码。为了使用数据库,我在Swing中一切正常 刷新代码:Java Swing:JTable不';在鼠标单击任何位置之前是否更新?,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我只是在编写与数据库(MySQL)交互的应用程序代码。为了使用数据库,我在Swing中一切正常 刷新代码: 最后,我编写了一些代码来刷新JTable中的数据,以反映数据库中的实际数据 这在这样的场景中很有用。如果我向JTable中添加了一条新记录,通常会将该记录添加到基础数据库中。但如果我添加了一条与现有记录重复的记录,底层数据库将不会插入它,但它将显示在JTable中(在实际数据库中没有相应的记录) 要刷新的代码具有从数据库获取新数据的任务。它可以正常工作,但不会影响(更新/刷新)表,直到我在
最后,我编写了一些代码来刷新JTable中的数据,以反映数据库中的实际数据 这在这样的场景中很有用。如果我向JTable中添加了一条新记录,通常会将该记录添加到基础数据库中。但如果我添加了一条与现有记录重复的记录,底层数据库将不会插入它,但它将显示在JTable中(在实际数据库中没有相应的记录) 要刷新的代码具有从数据库获取新数据的任务。它可以正常工作,但不会影响(更新/刷新)表,直到我在JTable中的任意位置单击鼠标 如何使swing组件在不戳它的情况下正确更新 “但是,如果我添加了一条与现有记录重复的记录,底层数据库将不会插入它,但它将显示在JTable中……如何在不戳它的情况下正确更新swing组件?”
- -返回一个
,即数据库中更新的行数int
String text1 = textfield1.getText();
String text2 = textfield2.getText();
String text3 = textfield3.getText();
PreparedStatement ps = conn.prepareStatement("INSERT into table1 values (?, ?, ?)");
ps.setString(1, text1);
ps.setString(2, text2);
ps.setString(3, text3);
int result = ps.executeUpdate(); // check for rows affected
if (result != 0 ) { // only if result != 0 do we update the table
DefaultTableModel model = (DefaultTableModel)jTable.getModel();
Object[] row = { text1, text2, text3 };
model.addRow(row);
} else {
someStatusLabel.setText("That record already exists in the Database");
}
如何使swing组件在不戳它的情况下正确更新
有关详细信息,请阅读Swing教程中的部分。因此,如果数据成功插入数据库,您只希望更新表?在TableModel中,您的结构不应允许重复,一个好的解决方案是使用
集
,您必须覆盖行实体中的equals
和hashCode
,数据库更新应在非EDT线程上完成。TableModel更新应在EDT上完成。