Java 动态更新JTable(个)

Java 动态更新JTable(个),java,sql,swing,jtable,hsqldb,Java,Sql,Swing,Jtable,Hsqldb,我正在开发一个Java数据库应用程序,其中用户一边插入数据,另一边在JTable(在JScrollPane中)显示链接的HSQLDB数据库的内容。到目前为止,一切都很好,但我搜索了很长时间,没有找到如何在对数据库进行更改(添加、更新或删除)时动态更新我的JTable,因为我的程序的每个实例都可以,因为有几个人可以同时处理它。 它实际上是通过替换本地更新的表模型来工作的,但是对于其他实例,我设置了一个计时器,它不是很干净 你能帮我解决这个问题吗 这是我的代码(我有一个Interface.java用

我正在开发一个Java数据库应用程序,其中用户一边插入数据,另一边在
JTable
(在
JScrollPane
中)显示链接的
HSQLDB
数据库的内容。到目前为止,一切都很好,但我搜索了很长时间,没有找到如何在对数据库进行更改(添加、更新或删除)时动态更新我的
JTable
,因为我的程序的每个实例都可以,因为有几个人可以同时处理它。 它实际上是通过替换本地更新的表模型来工作的,但是对于其他实例,我设置了一个
计时器
,它不是很干净

你能帮我解决这个问题吗

这是我的代码(我有一个Interface.java用于“可见”部分,还有一个SQL.java用于管理我的数据库):

我的计时器

JTable table=新的JTable(sql.showTable(“从suivi_flotte中选择*);
计时器计时器=新计时器(900000,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
sql.updateTable();
nbLinesOrRefresh.setText(“实现…”);
Timer timer2=新计时器(1000,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
nbLinesOrRefresh.setText(“”);
}
});
timer2.start();
timer2.setRepeats(假);
}
});
定时器设置延迟(900000);
timer.start();
格式表(table);
My
updateTable()
方法(每次插入、更新或删除时调用)

受保护的void updateTable(){
Interface.f.table.setModel(可显示(“从suivi_flotte中选择*);
Interface.f.formatTable(Interface.f.table);//自定义JTable外观的方法
}
我的
showTable(字符串查询)
方法

受保护的DefaultTableModel showTable(字符串查询){
String[]columnsTitles={“N°”,“Propriétaire”,“Service”,“Grade”,“Nom”,“PréNom”,“Mail”,“N°SIM”,“N°Tél”,“Mod le”,“N°Série”,“IMEI”,“N°Crypto”,“Date début”,“Date fin”,“DS”,“Commentaire”,“Date de création”};
ArrayList columnNames=新的ArrayList();
ArrayList数据=新的ArrayList();
connectDB();//仅用于连接到数据库
try(ResultSet rs=stmt.executeQuery(查询)){
ResultSetMetaData md=rs.getMetaData();
int columns=md.getColumnCount();
对于(int i=1;i subArray=(ArrayList)data.get(i);
向量子向量=新向量();
对于(int j=0;j//tModel.fireTableDataChanged();//什么样的数据库,以及程序是如何连接到数据库的?旁注:您似乎过多地使用静态方式,这表明程序设计很差。我建议您将大部分代码从静态世界中提取出来,并放入实例世界。我添加了连接代码。是的,我所有的SQL.java代码都是静态的,因为我不明白为什么会这样不应该(我没有想象过编写
SQL sql1=new SQL();
然后
sql1.updateTable();
),它会改变什么吗?我应该这样做吗?为什么?谢谢,一切似乎都是静态的。你肯定已经知道为什么这是一件坏事。它会导致多实例出现问题吗?