JTable动态刷新内容

来源:互联网 发布:微信企业宣传软件 编辑:程序博客网 时间:2024/06/05 02:54
   搞了很久,一直不知道怎么让表格中的内容动态更新,今天终于弄出来了。
   场景描述:
有这么一张表格,下面有添加、删除等操作。
JTable动态刷新内容

点击下面的添加后出现添加子窗口
JTable动态刷新内容
点击添加子窗口的“添加”后,主界面的表格立马出现刚刚添加的。
删除效果一样,点击删除,主界面中对应的记录马上消失。

解决方法:
  在主界面设立一个状态变量A判断是否更新。在主界面使用一个线程,不停循环用于专门监听A的值。
 规定:当变量A等于特定值(1)时刷新。
 在调用子窗体(添加子窗体)时,传递对象引用。将主界面Panel的那个对象(UpdateMenue.this)作为参数给子窗体,子窗体对“对象.A”进行修改。主界面开个子进程,一直对A进行判断,一旦A变为特定的值就刷新。

代码:
 主class中定义状态变量
public int Updat=0;  
析构函数中打开监听进程
//开启监听表格状态线程 
listenUpdateThread listenUpdate=newlistenUpdateThread(table_1,Updat); 
listenUpdate.start();

进程实现:
//刷新表格进程
class listenUpdateThread extends Thread{
  public JTable table2;
  int aa;
publiclistenUpdateThread(JTable table,int a)
 {
    this.table2=table;
    this.aa=a;
 }
public void run()
 {
 while(true)
 {
 if(Updat==1)
{
 model.setRowCount(0);
List list =dao.selectJoinDepot();
       for (int i = 0; i <list.size(); i++) 
                {
Book depot = (Book)list.get(i);
String dRemark = depot.getRemark();
if(dRemark.length()>4)
                     {
    dRemark= dRemark.substring(0, 4)+"...";
}
model.addRow(new Object[]{depot.getoId(),depot.getdotime(),depot.getdId(),depot.getWareName(),depot.getJoinTime(),depot.getWeight(),dRemark});
}
Updat=0;
 
}
 
 }
 
   
}
 
}}


子窗体中直接将对象作为参数
public InserBookFrame(final BookPanel bp) //子窗体类的析构函数
对应的监听器(确认添加)中修改状态变量bp.Updat=1;

这样就可以动态实时刷新了

0 0