You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaFX中使用定时器让程序暂停一秒后执行操作?

JavaFX 替代 Swing Timer 的单次延迟任务实现

嘿,我懂你找了好久的那种困扰!在JavaFX里完全有原生的方式实现你要的单次延迟任务,根本不用碰Swing的Timer类~

你之前用Swing Timer实现了1秒后单次输出的功能,对应的JavaFX实现可以用**javafx.animation.Timeline**,它是JavaFX专门用来处理时间线任务的类,而且天然适配JavaFX的应用线程,避免了线程安全问题。

对应你的需求的代码实现

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.util.Duration;

// 注意:这段代码要在JavaFX应用线程中执行(比如Application类的start方法内)
Timeline delayTimeline = new Timeline(new KeyFrame(
    Duration.millis(1000), // 延迟1000毫秒,和你之前的设置一致
    event -> {
        // 延迟后执行的任务
        System.out.println("Hello there");
    }
));
delayTimeline.setCycleCount(1); // 设置只执行一次,对应Swing Timer的setRepeats(false)
delayTimeline.play(); // 启动任务

额外说明

  • 如果之后需要实现重复执行的任务,只需要把setCycleCount(1)改成setCycleCount(Timeline.INDEFINITE)就可以,效果和Swing Timer的setRepeats(true)一致。
  • 如果你需要更复杂的后台定时任务(比如耗时操作),可以考虑用javafx.concurrent.ScheduledService,不过对于这种简单的单次UI线程任务,Timeline足够轻量好用。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:31:17