如何为长度未知的任务创建准确的进度条?

时间:2012-04-19 15:58:16

标签: java jprogressbar

如果我读到一个文件,直到它遇到一个空行并且想要在读取完成时创建一个稍微准确的JProgressBar,我该怎么做?

我问的原因是因为某些文件是在200ms内阅读的,其他文件在2500ms10000ms之间阅读。

我正在做一些简单的阅读文件

boolean completed

while(!completed) {
    //read file
    if(reader == null) {
        completed = false;
    } 
}

那么有没有办法让进度条准确适用于这种情况? (顺便说一下,文件的大小并不一定意味着在这种情况下读取的时间会更短)

1 个答案:

答案 0 :(得分:6)

使用文件的大小 - 这是您最好的衡量标准。

您展示的内容必须具有用户可以理解的含义。这是最重要的部分。如果进度条表示已处理文件的百分比,则非常容易理解,易于量化,易于计算和显示。这使您的进度条变得透明,这才是重要的。

想想用户如何看待它。你不需要编写某种预测智能,因为用户有大脑,他们可以得出自己的结论。因此,如果他们看到进度条在前半段快速运行然后减速,他们知道它处理了一半的文件,但下半部分需要更长的时间。这就是他们需要知道的一切!他们可以得出自己的结论,即由于进度条减慢,完成文件所需的时间可能比上半年显示的时间长。

事实上,用户可能已经知道正在处理的文件。对于这个特定的文件,他们可能知道有用的(或长处理的)数据都在下半部分。因此,当他们看到进度条减慢时,预计它们就会出现。这为用户提供了所需的透明度,使他们知道软件正在按预期运行,并且他们可以得出他们需要等待多长时间的结论。

当然,显示一般估计“在3秒内处理25%的文件仍然有用,所以我们估计还有9秒完成。”这也是一个非常通用的基本方程,它是透明的,因此用户可以知道如何使用它并根据它们正在处理的文件的细节进行调整。