У меня есть задание, в котором я должен создать галерею изображений, которая использует 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
@ Override
защищенная пустота выполнена () {
попробуй {
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
.