Java 代码在由计时器触发时无法完全工作



我编写了一个简单的GUI,它从Excel电子表格中检索数据并将其绘制在屏幕上(连同特殊颜色代码)。程序本身工作得很好。但是当我添加了一个计时器(swing/utils尝试)来定期更新Excel数据(即。每15秒重新加载一次数据)屏幕上丢失了很多数据(应该用文本填充的空白标签等)

我删除了计时器->再次完美地工作(但当然需要每隔一段时间重新启动一次程序-这是我不能忍受的:D)我添加了一个按钮来尝试手动数据更新->工作完美,但是- meh -它应该定期更新,而不必有人点击按钮

定时器功能似乎要求线程在一定的(很短的)时间内完成。

你有什么建议吗?

代码:

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
  @Override
  public void run() {
  .
  .
  .           
       }
  }, 100, 15000);

对GUI的更新必须在事件线程上完成。MouseListener 在事件线程上执行,但计时器的run()方法不是。run()方法中的GUI更新代码应该在传递给swingutility . invokelater()的另一个可运行程序中完成。

相关内容

  • 没有找到相关文章

最新更新