我正在尝试编写一段代码,使用 javafx 使内容以预定但不规则的间隔显示在屏幕上。我尝试使用计时器( java.util ,而不是 javax.swing ),但事实证明,如果您在单独的线程中工作,则无法更改应用程序中的任何内容。(就像计时器)任何人都可以告诉我怎么做如果应用程序都是单独的线程,是否需要一个计时器来与应用程序交互?
最佳答案
您不需要 java.util.Timer
或 java.util.concurrent.ScheduledExecutorService
来安排 JavaFX 应用程序线程上的 future 操作。您可以使用 JavaFX Timeline 作为计时器:
new Timeline(new KeyFrame(
Duration.millis(2500),
ae -> doSomething()))
.play();
或者,您可以使用 ReactFX 中的便捷方法:
FxTimer.runLater(
Duration.ofMillis(2500),
() -> doSomething());
请注意,您不需要将操作包装在 Platform.runLater
中,因为它已经在 JavaFX 应用程序线程上执行。
关于multithreading - 定时器和javafx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684186/