5

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

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

4

3 回答 3

5

使用ScheduledExecutorService

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

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

于 2013-04-28T19:51:19.310 回答
5

但我对线程的了解很少......

  1. 您绝对需要了解一般的线程,Java 并发教程可以提供帮助。
  2. 然后,您应该特别了解Swing中的并发性。
  3. 在 JPanel 的方法中绘制 GUI 的数据图形表示paintComponent(...),或者更好的是,在 BufferedImage 中然后显示在paintComponent(...).
  4. 在 SwingWorker 等后台线程中重新加载数据。这个 Worker 可以有一个 java.util.Timer 或一个ScheduledExecutorService根据 syb0rg 的答案(1+ 到 syb0rg 的答案),每 5 秒请求并获取新数据。
  5. 然后repaint()在您的数据更改后从 Swing 事件线程调用。如果使用 SwingWorker,进程/发布方法对可以帮助解决这个问题。您可以使用它将数据发布到 Swing 事件线程。
于 2013-04-28T19:57:08.793 回答
0

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

于 2013-04-28T19:50:57.880 回答