我正在使用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
是插入到数据库中的总行数。我知道插入过程后进度表正在更新。
但我希望我的进度表更新后没有繁忙标签。
如果有人知道解决办法,请帮帮我。欢迎所有建议。提前致谢。
最佳答案
其实很简单
只要您处于同一个执行中,您的 GUI 就不会发生任何更新。
您唯一的解决方案是处理多个调用,通过计时器或启用服务器推送来实现。
这一切看起来很复杂,但也有好消息。
Robert Wenzel 写了一篇关于简化长操作的小演讲,其中包括简化此操作的整个基础知识。
请看一下这个:
https://www.zkoss.org/wiki/Small_Talks/2015/January/Simplify_Long_Operation_Handlings
关于java - ZK 进度计无法在没有事件的情况下使用 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783284/