如何将进度条同步到数据?

时间:2012-07-31 23:38:16

标签: java progress-bar swt

我的程序从文件系统上的目录中读取文件。我有一个进度条,其最小设置为0,最大设置为n(特定目录中的文件数)。上面是一段文字,显示了迭代的进度...... 1 / 100,2 / 100,3 / 100等。

我遇到的问题是显示的文字永远不会与进度条同步。当文字显示100/100时,进度条将在70%左右。有人可以帮我吗?

pb1.setMinimum(0);
        pb1.setMaximum(files2.size());

            shell.getDisplay().asyncExec(new Runnable() {
                public void run() {
                    if (pb1.isDisposed())
                        return;
                    for(final File f:files2){
                        pb1.setSelection(pb1.getSelection() + 1);
                        dialogShell.setText("Loading "+pb1.getSelection()+"/"+pb1.getMaximum());

                    }
                }
              });

1 个答案:

答案 0 :(得分:1)

尝试使用线程中的“计数器”,如

pb1.setMinimum(0);
pb1.setMaximum(files2.size());

shell.getDisplay().asyncExec(new Runnable() {
    public void run() {
        int n = pb1.getMinimum();
        int d = pb1.getMaximum();

        if (pb1.isDisposed()) { return; }

        for(final File f:files2){
            pb1.setSelection(n);
            dialogShell.setText("Loading "+n+"/"+d);
            n++;
        }
    }
});