使用HttpURLConnection在Java Swing中显示“正在加载”消息

时间:2014-02-13 19:50:32

标签: java multithreading swing

在我的程序获取网址时,我无法收到“正在加载”消息。我尝试使用多种不同的方法,例如ThreadSwingWorkerSwingUtilities,但“抓取”消息在获取网页后始终显示。如何在获取网页之前显示“正在加载”?

public static void get(String url)
{
    content.add(new JLabel("Loading..."));
    content.repaint();

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            // load webpage
        }  
    });
}

1 个答案:

答案 0 :(得分:4)

  

但是“加载”消息在获取网页后始终显示。

然后你的代码阻止了EDT,因此GUI无法重绘自己。

  

我尝试使用几种不同的方法,例如...... SwingUtilities,

使用invokeLater()发布的代码是错误的,因为您仍然在EDT上执行长时间运行的任务。

  

我尝试使用几种不同的方法,如Thread,SwingWorker, -

这些是正确的方法。长时间运行的任务应该在线程或Swing worker的doInBackground()方法中执行。

阅读Concurrency上的Swing教程中的部分以获取更多信息。