提问者:小点点

在java swing中使用线程加载内容时显示加载gif徽标


我试图在一些web请求完成时在jlabel中显示加载的gif。我做了一些研究,发现我需要使用事件调度线程才能做到这一点。但它似乎正在将此任务放入队列,以便稍后执行。我想并行执行,这意味着,当请求完成时,屏幕上会显示一个gif,通知客户某些任务正在完成。

但此gif仅在请求完成后显示。

我使用了invokeLater和Swing计时器,但没有成功。也许我的代码有问题。

我执行了以下代码:

label.setVisible(true);
label.getParent().revalidate();
label.getParent().repaint();

在可运行的代码片段中。

我做错什么了吗?你能帮帮我吗?


共1个答案

匿名用户

您需要使用SwingWorker线程。所有与swing相关的东西,如窗户画和活动,都将在EDT上执行。您将执行后台任务,如在后台线程中请求和检索网页(SwingWorker)。

API:https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html

信息:http://en.wikipedia.org/wiki/SwingWorker