Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在发送HTTP请求之前显示加载jLabel_Java_Swing_Jframe - Fatal编程技术网

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

Java 在发送HTTP请求之前显示加载jLabel,java,swing,jframe,Java,Swing,Jframe,我有一个jLabel,内容是“正在加载…请稍候!”。其可见性已设置为false。我实现了以下代码,以使其在发送HTTP请求之前可见,并在请求完成时隐藏它 Loading.setVisible(true); loaddata(); Loading.setVisible(false); Loading.setVisible(true); loaddata(); Loading.setVisible(false); loaddata函数使用HTTP GET加载HTTP数据。

我有一个jLabel,内容是“正在加载…请稍候!”。其可见性已设置为false。我实现了以下代码,以使其在发送HTTP请求之前可见,并在请求完成时隐藏它

    Loading.setVisible(true);
    loaddata();
    Loading.setVisible(false);
Loading.setVisible(true);
loaddata();
Loading.setVisible(false);
loaddata函数使用HTTP GET加载HTTP数据。内容接收得非常好。但是装载标签没有显示出来。但是,当我实现此代码时:-

    Loading.setVisible(true);
    loaddata();

加载jLabel将出现(但由于明显的原因不会消失)。有谁能告诉我如何成功实现这一点吗?

您的HTTP请求是异步的,因此您应该在请求完成时禁用加载指示器

    Loading.setVisible(true);
    loaddata();
    Loading.setVisible(false);
Loading.setVisible(true);
loaddata();
Loading.setVisible(false);
这些代码使您的指示器可见,发送请求(将创建新线程),并执行下一个操作:使指示器不可见(所以您认为加载指示器从未显示,但它确实显示)


在请求完成时设置Make标志,或者尝试为请求方法实现侦听器模式,您可以在此处找到示例。

您正在事件调度线程上执行一个长时间运行的任务,该任务阻止GUI重新绘制自身


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

loaddata()的代码是否在另一个线程内执行?@Sage,否,loaddata是一个单独的函数,不涉及任何线程