我继承了JTable类,并写了一个更新表中的数据的方法,该方法的思路如下:
我先用tableModel删除一行,再在数据库中查找一条数据添加到刚才删除的那一行上。来实现JTable表中的数据的修改。可是当我先显示了一个JOptionPane后,再调用上面的方法可以实现刷新,但是如何没有JOpentionPane,就不能刷新JTable中的数据,这是怎么回事。我用了validate方法和fireTableDataChanged都不行。方法如下
JOptionPane.showMessageDialog(null,"修改成功","提示",JOptionPane.OK_OPTION);

table.updataTable(scp.tableNum,scp.num,scp.button,databaseName);
//tableNum是JTable中的第几行数据 num是数据库中的一个ID号,databaseName是要更新的那个数据库名称
public void updataTable(int tableNum,int num,JButton button,String databaseName){

dm.removeRow(tableNum); //System.out.println("行号" + tableNum+"数据库号"+num);
Connection conn = null;

Statement st = null;

ResultSet rs = null;

try{
String dbURL ="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=d:/exam.mdb";
  
conn = DriverManager.getConnection(dbURL);//创建连接对象
   
st = conn.createStatement();
   
String sql = "select * from "+databaseName+" where id = "+num;

rs = st.executeQuery(sql);

while(rs.next()){
 
dm.insertRow(tableNum, new Object[]{rs.getInt("id"),rs.getString("content")
,rs.getString("answer"),rs.getString("type"),rs.getString("quotiety")

});
this.setRowSelectionInterval(tableNum, tableNum);
button.setEnabled(false);
   
}

}catch(SQLException e){

System.out.println("数据库连接失败!");

}finally{

try{

if(rs!=null){

rs.close();

}

if(st!=null){

st.close();

}

if(conn!=null){

conn.close();

}

}catch(SQLException e){

e.printStackTrace();

}

}
// dm.fireTableDataChanged();
}