在Java中异步加载基于网络的图像

时间:2011-04-11 22:33:10

标签: java image swing asynchronous loading

我必须能够加载和绘制位于基于网络的驱动器上的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 个答案:

答案 0 :(得分:2)

简短回答:您应该将图像加载到另一个线程上。

Swing确实提供了一套很好的课程。模式:

http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html

答案 1 :(得分: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
    }
);