在我的程序获取网址时,我无法收到“正在加载”消息。我尝试使用多种不同的方法,例如Thread
,SwingWorker
和SwingUtilities
,但“抓取”消息在获取网页后始终显示。如何在获取网页之前显示“正在加载”?
public static void get(String url)
{
content.add(new JLabel("Loading..."));
content.repaint();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// load webpage
}
});
}
答案 0 :(得分:4)
但是“加载”消息在获取网页后始终显示。
然后你的代码阻止了EDT,因此GUI无法重绘自己。
我尝试使用几种不同的方法,例如...... SwingUtilities,
使用invokeLater()发布的代码是错误的,因为您仍然在EDT上执行长时间运行的任务。
我尝试使用几种不同的方法,如Thread,SwingWorker, -
这些是正确的方法。长时间运行的任务应该在线程或Swing worker的doInBackground()
方法中执行。
阅读Concurrency上的Swing教程中的部分以获取更多信息。