JTable动态刷新内容

    搞了很久,一直不知道怎么让表格中的内容动态更新,今天终于弄出来了。
    场景描述:
有这么一张表格,下面有添加、删除等操作。
JTable动态刷新内容

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

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

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

进程实现:
//刷新表格进程
class listenUpdateThread  extends Thread{
  public JTable table2;
  int aa;
public listenUpdateThread(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;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值