在发送HTTP请求之前显示加载jLabel

时间:2013-12-02 16:30:32

标签: java swing jframe

我有一个内容为"Loading...pelase wait!"的jLabel。其可见性已设为假。我实现了以下代码,以便在发送HTTP请求之前使其可见,并在请求完成时将其隐藏。

    Loading.setVisible(true);
    loaddata();
    Loading.setVisible(false);

loaddata函数可以使用HTTP GET加载HTTP数据。收到的内容非常好。但是加载标签没有显示出来。但是,当我实现此代码时: -

    Loading.setVisible(true);
    loaddata();

加载jLabel出现(但不会因为无聊的原因而消失)。谁能告诉我如何成功实现这个?

2 个答案:

答案 0 :(得分:1)

您正在Event Dispatch Thread上执行一个长时间运行的任务,该任务阻止GUI重新绘制。

阅读Concurrency上的Swing教程中的部分。解决方案是使用SwingWorker,这样就不会阻止EDT。

答案 1 :(得分:0)

您的HTTP请求是异步的,因此您应该在请求完成后禁用“加载”指示符。

Loading.setVisible(true);
loaddata();
Loading.setVisible(false);

这些代码使您可以看到指示器,发送请求(将创建新线程),并执行下一步操作:制作隐形指示器(因此您认为加载指示器从未显示,但确实如此)。

设置要设置的标志,请求完成后,或尝试为您的请求方法实现Listener模式,您可以在Listener(Observer)找到示例。