我有一个内容为"Loading...pelase wait!"
的jLabel。其可见性已设为假。我实现了以下代码,以便在发送HTTP请求之前使其可见,并在请求完成时将其隐藏。
Loading.setVisible(true);
loaddata();
Loading.setVisible(false);
loaddata函数可以使用HTTP GET加载HTTP数据。收到的内容非常好。但是加载标签没有显示出来。但是,当我实现此代码时: -
Loading.setVisible(true);
loaddata();
加载jLabel出现(但不会因为无聊的原因而消失)。谁能告诉我如何成功实现这个?
答案 0 :(得分:1)
您正在Event Dispatch Thread上执行一个长时间运行的任务,该任务阻止GUI重新绘制。
阅读Concurrency上的Swing教程中的部分。解决方案是使用SwingWorker,这样就不会阻止EDT。
答案 1 :(得分:0)
您的HTTP请求是异步的,因此您应该在请求完成后禁用“加载”指示符。
Loading.setVisible(true);
loaddata();
Loading.setVisible(false);
这些代码使您可以看到指示器,发送请求(将创建新线程),并执行下一步操作:制作隐形指示器(因此您认为加载指示器从未显示,但确实如此)。
设置要设置的标志,请求完成后,或尝试为您的请求方法实现Listener模式,您可以在Listener(Observer)找到示例。