我的 Swing 应用程序中有以下代码:
URL url = new URL("http://stackoverflow.com/");
InputStream is = url.openStream();
但是使用 openStream 方法下载网页会使 swing 应用程序挂起,直到网页完全下载。如何防止这种情况/有哪些替代方法,以便在网页完全下载之前显示加载图像?
在单独的线程中加载:
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();
您可以使用多个线程,它们相互等待。