2

我的 Swing 应用程序中有以下代码:

URL url = new URL("http://stackoverflow.com/");
InputStream is = url.openStream();

但是使用 openStream 方法下载网页会使 swing 应用程序挂起,直到网页完全下载。如何防止这种情况/有哪些替代方法,以便在网页完全下载之前显示加载图像?

4

2 回答 2

3

在单独的线程中加载:

InputStream is = null;

Thread worker = new Thread() {
    // show "loading..."
    public void run() {
        try {
            URL url = new URL("http://stackoverflow.com/");
            is = url.openStream();
        } catch (InterruptedException ex) { ... }
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // show "done" or remove "loading..."
            }
        });
    }
};
worker.start();
于 2012-05-20T16:18:23.047 回答
3

您可以使用多个线程,它们相互等待。

于 2012-05-20T16:16:12.897 回答