【发布时间】:2010-06-28 22:58:29
【问题描述】:
我有一个任务,我必须创建一个图像库,它使用SwingWorker 从文件加载图像,一旦加载图像,您可以翻转图像并播放幻灯片。我无法使用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;
}
}
完成后,我只需将图像插入 List<Image> 即可。
// In the EDT
@覆盖 受保护的无效完成(){ 试试 {
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 类。
【问题讨论】:
标签: java swingworker