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

问题描述 投票:3回答:1

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

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

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());

        }
    }
});
java progress-bar swt
1个回答
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++;
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.