没有事件,ZK进度表不能用于for循环

时间:2016-11-24 10:03:16

标签: java process zk

我正在使用ZK框架。我只想在MySQL数据库中插入大量行。插入数据时需要几秒钟。在此期间,我只想显示一个进度表,它告诉用户插入数据库的行数。

我试过这样:

rowCount = qModel.executeInsert();      
for(long j = 1; j <= rowCount; j++)
{
    sum = sum + 100 / rowCount;
    if (j == rowCount)
    {               
        sum = 100;
    }   
    progressMeter.setValue(sum);            
    countLabel.setValue((rowCount - 1) + " Rows inserted");
    BindUtils.postNotifyChange(null, null, countLabel, "_value");
}   

此处rowCount是插入数据库的总行数。我知道在插入过程后,进度表会更新。 但我希望我的进度表更新没有繁忙的标签。

如果有人知道解决方案,请帮帮我。欢迎所有建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

它实际上很简单,

只要您执行相同的操作,您的GUI就不会发生任何更新 您唯一的解决方案是使用多个呼叫,通过计时器或启用服务器推送实现。

这一切看起来都很复杂,但也有好消息 Robert Wenzel撰写了一篇关于简化长期操作的小谈,其中包括简化此操作的基本内容。

请看一下:

https://www.zkoss.org/wiki/Small_Talks/2015/January/Simplify_Long_Operation_Handlings