Swing worker在导入期间无法更新Jprogressbar

时间:2015-08-11 09:37:41

标签: java swingworker jprogressbar

在SwingWorker实施方面,您仍然是一名学习者。我正在开发一个带有swing的桌面应用程序,可以上传大量数据,大约需要15秒。我想使用swingworker来管理任务并更新失败的jPrgressBar。 下面是使用

的代码
    BitmapFactory.Options bitopt = new BitmapFactory.Options();
    bitopt.inJustDecodeBounds = true;
    Bitmap bit = BitmapFactory.decodeFile(file, bitopt);

    int h = (int) Math.ceil(bitopt.outHeight / (float) height);
    int w = (int) Math.ceil(bitopt.outWidth / (float) width);

    if (h > 1 || w > 1) {
        if (h > w) {
            bitopt.inSampleSize = h;

        } else {
            bitopt.inSampleSize = w;
        }
    }
    bitopt.inJustDecodeBounds = false;
    bit = BitmapFactory.decodeFile(file, bitopt);
    return bit;
}

这个私有类有导入方法,我知道我必须实现一个propertyychagelistner到jprogressbar来监视和更新我的进度条,我正在使用的代码如下。

private class Update extends SwingWorker<Void, Void>{
    @Override
    protected Void doInBackground() throws Exception {
        importData();
            Thread.sleep(1000);
                return null;
    }
    protected void done(){

    }
}

然后我在jButton actionedperformed下调用runPregress方法。数据正在成功导入,但进度条没有任何结果。请帮助我解决我的问题,尽量给出尽可能多的解释,因为我仍然在学习如何工作

1 个答案:

答案 0 :(得分:0)

查看文档中的最后一个示例: http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html

在方法“doInBackGround()”中调用方法“setProgress()”。你应该像最后一个例子(PrimeNumbersTask)那样多次调用它。