每X秒重新加载一次JPanel(使用线程?)



我的程序中有一个设置选项卡。您可以在那里设置的数据,不仅可以从这个面板更改。这就是为什么我想每5秒重新加载一次数据。我认为这必须用一个额外的线程来完成,但我对线程的了解很少。我已经有了一个重载方法。

我应该用什么来做到这一点(以及如何…)?

使用ScheduledExecutorService:

 private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
 scheduler.scheduleAtFixedRate(yourRunnable, 5, 5, SECONDS);

然后在yourRunnable中重新加载JPanel(只需遵循JavaDocs的示例)。

但是我对线程的了解很少…

    你绝对需要学习线程的一般知识,Java并发教程可以帮助你。
  1. 那么你应该学习Swing中的并发性。
  2. 在JPanel的paintComponent(...)方法中绘制数据的GUI图形表示,或者更好的是,在buffereimage中显示paintComponent(...)
  3. 在后台线程(如SwingWorker)中重新加载数据。这个Worker可以有一个java.util.Timer或ScheduledExecutorService作为syb0rg的答案(1+到syb0rg的答案),每5秒请求和获取新数据。
  4. 然后在数据更改后从Swing事件线程调用repaint()。如果使用SwingWorker,进程/发布方法对可以帮助解决这个问题。你可以这样发布你的数据到Swing事件线程。

您可以使用Timer定期更新您的数据

最新更新