gpt4 book ai didi

javafx - 如何在 JavaFX 中使用 PauseTransition 方法?

转载 作者:行者123 更新时间:2023-12-03 21:37:10 24 4
gpt4 key购买 nike

我读了这本书,但我仍然对暂停过渡方法感到困惑。
我做了一个显示数字的标签,我希望这个数字每秒都在增加。

最佳答案

如何使用 PauseTransition

PauseTransition用于一次性暂停。以下示例将在暂停一秒后更新标签的文本:

label.setText("Started");
PauseTransition pause = new PauseTransition(Duration.seconds(1));
pause.setOnFinished(event ->
label.setText("Finished: 1 second elapsed");
);
pause.play();

为什么 PauseTransition 不适合你

但这不是你想要做的。根据您的问题,您希望每秒更新一次标签,而不仅仅是一次。您可以将暂停转换设置为无限期循环,但这对您没有帮助,因为您无法在 JavaFX 8 中设置循环完成时的事件处理程序。如果 PauseTransition 无限期循环,则永远不会调用转换的完成处理程序因为过渡永远不会结束。所以你需要另一种方法来做到这一点......

你应该使用时间轴

suggested by Tomas Mikula ,使用 Timeline而不是 PauseTransition。
label.setText("Started");
final IntegerProperty i = new SimpleIntegerProperty(0);
Timeline timeline = new Timeline(
new KeyFrame(
Duration.seconds(1),
event -> {
i.set(i.get() + 1);
label.setText("Elapsed time: " + i.get() + " seconds");
}
)
);
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();

带定时器的替代解决方案

有一个基于 Timer 的替代解决方案对于以下问题:
  • How to update the label box every 2 seconds in java fx?

  • 但是,我更喜欢基于时间轴的解决方案而不是该问题的计时器解决方案。 Timer 需要一个新线程并额外注意确保更新发生在 JavaFX 应用程序线程上,而基于 Timeline 的解决方案不需要任何这些。

    关于javafx - 如何在 JavaFX 中使用 PauseTransition 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30543619/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com