java - 在javafx中更新canvas

标签 java user-interface javafx-8

我有一个 javafx 应用程序,它使用 Canvas 根据某些计算的结果呈现不同的元素。我在 while 循环中进行这些计算后调用渲染函数,如下所示:

  static void calculateAndRender(/*Args*/){

      while(/*condition*/){

          //Perform some calculations

          //render the results
          render();
     }
 }

但是, Canvas 仅在 while 循环结束后渲染,而不显示其间的步骤。渲染函数按预期工作,我知道问题不在于循环完成得太快以至于我看不到渲染的 Canvas ,而是需要一些时间。

那么,问题是,为什么这样做时 Canvas 没有更新?我怎样才能让它按我想要的方式工作?我在使用 python 与 gtk 和 javascript 时遇到了类似的问题,但在这两种语言中我都能够强制 UI 更新,而这似乎无法在 java 中完成。

最佳答案

您正在用循环阻塞 JavaFX 应用程序线程。 请阅读此处的文档:http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm

关于java - 在javafx中更新canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364926/

相关文章:

listview - JavaFX:在 ListView 中换行文本

java - 从轴中删除负值

java - 为什么 String.matches 在 Java 中返回 false?

java - 使人脸检测器适用于任何文件格式

user-interface - Geb 测试经常失败并出现 WaitTimeoutException : condition did not pass in 99. 0 秒

java - 从 ArrayList 查询学生姓名并在文本区域中返回结果

Windows 上的 Javafx 应用程序无需 Java(Maven 或...?)

java - ejb3-persistence.jar源码

java - 为什么迭代 List 比通过它索引更快?

linux - 如何创建一个简单的桌面环境?