我的程序中有一个设置选项卡。您可以在那里设置的数据,不仅可以从这个面板更改。这就是为什么我想每5秒重新加载一次数据。我认为这必须用一个额外的线程来完成,但我对线程的了解很少。我已经有了一个重载方法。
我应该用什么来做到这一点(以及如何…)?
使用ScheduledExecutorService:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(yourRunnable, 5, 5, SECONDS);
然后在yourRunnable
中重新加载JPanel
(只需遵循JavaDocs的示例)。
但是我对线程的了解很少…
- 你绝对需要学习线程的一般知识,Java并发教程可以帮助你。
- 那么你应该学习Swing中的并发性。
- 在JPanel的
paintComponent(...)
方法中绘制数据的GUI图形表示,或者更好的是,在buffereimage中显示paintComponent(...)
。 在后台线程(如SwingWorker)中重新加载数据。这个Worker可以有一个java.util.Timer或 - 然后在数据更改后从Swing事件线程调用
repaint()
。如果使用SwingWorker,进程/发布方法对可以帮助解决这个问题。你可以这样发布你的数据到Swing事件线程。
ScheduledExecutorService
作为syb0rg的答案(1+到syb0rg的答案),每5秒请求和获取新数据。您可以使用Timer
定期更新您的数据