асинхронная загрузка сетевых изображений в Java
Я должен иметь возможность загружать и рисовать X количество изображений, расположенных на сетевом диске. Мне нужна помощь в поиске способа асинхронной загрузки изображений.
java.net.URL Loc = new URL("http://auroragm.sourceforge.net/GameCover/GameCases/Mass-Effect.png");
JLabel lbl = new JLabel();
lbl.setIcon((anotherIcon = new ImageIcon(Loc)));
Выше приведено одно изображение, которое загружается в поток GUI и, таким образом, будет заморожено, если будут загружены еще 20. Любая помощь будет признательна
2 ответа:
Загрузите изображения в отдельный поток. Пожалуйста, рассматривайте приведенный ниже код как псевдокод:
final java.net.URL Loc = new URL("http://.../Mass-Effect.png"); Thread t = new Thread(new Runnable() { public void run() { Object content = Loc.getContent(); // content would be probably some Image class or byte[] // or: // InputStream in = Loc.openStream(); // read image from in } );
Краткий ответ: вы должны загрузить изображения в другой поток.
Swing предоставляет хороший набор классов и шаблонов для этого:
Http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html