我有一个任务,我必须创建一个图像库,它使用 aSwingWorker
从文件加载图像,一旦加载图像,您可以翻转图像并播放幻灯片。我无法使用SwingWorker
.
这就是在后台发生的事情,它只是将结果发布到 TextArea
// In a thread
@Override
public List<Image> doInBackground() {
List<Image> images = new ArrayList<Image>();
for (File filename : filenames) {
try {
//File file = new File(filename);
System.out.println("Attempting to add: " + filename.getAbsolutePath());
images.add(ImageIO.read(filename));
publish("Loaded " + filename);
System.out.println("Added file" + filename.getAbsolutePath());
} catch (IOException ioe) {
publish("Error loading " + filename);
}
}
return images;
}
}
完成后,我只需将图像插入 a 即可List<Image>
。
// In the EDT
@Override protected void done() { 尝试 {
for (Image image : get()) {
list.add(image);
}
} catch (Exception e) { }
}
我还创建了一个返回被list
调用的方法,getImages()
我需要从中获取列表,getImages()
但在我调用时不接缝execute()
工作
MySwingWorkerClass swingworker = new MySwingWorkerClass(log,list,filenames);
swingworker.execute();
imageList = swingworker.getImage()
一旦它到达imageList
它不会返回任何东西我能够获取列表的唯一方法是当我使用run()
而不是execute()
有另一种方法来获取列表还是该run()
方法是唯一的方法?或者我不理解这个Swing Worker
类。