在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方法。数据正在成功导入,但进度条没有任何结果。请帮助我解决我的问题,尽量给出尽可能多的解释,因为我仍然在学习如何工作
答案 0 :(得分:0)
查看文档中的最后一个示例: http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html
在方法“doInBackGround()”中调用方法“setProgress()”。你应该像最后一个例子(PrimeNumbersTask)那样多次调用它。