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

JavaFX中取消勾选复选框时如何停止ScaleTransition动画

解决复选框取消勾选时停止ScaleTransition动画的问题

你的问题核心是每次点击复选框都会新建一个ScaleTransition实例,且未保留动画引用,导致取消勾选时无法终止之前启动的动画。以下是修复方案:

1. 将ScaleTransition设为类成员变量

把动画实例定义在方法外部,确保整个类可访问,避免重复创建实例:

// 类级别变量,仅初始化一次
private ScaleTransition scaleT;

// 在构造函数或初始化方法中完成动画配置
public void initAnimation() {
    scaleT = new ScaleTransition(Duration.seconds(5), rectangle);
    scaleT.setAutoReverse(true);
    scaleT.setCycleCount(Timeline.INDEFINITE);
    scaleT.setToX(2);
    scaleT.setToY(2);
}

2. 根据复选框状态控制动画启停

在复选框的点击事件中,通过isSelected()判断状态,执行播放或停止操作,还可按需重置矩形缩放状态:

checkbox.setOnAction(e -> {
    if (checkbox.isSelected()) {
        scaleT.play();
    } else {
        scaleT.stop();
        // 可选:取消勾选后让矩形立刻恢复原始大小
        rectangle.setScaleX(1);
        rectangle.setScaleY(1);
    }
});

关键说明

  • 复用同一个ScaleTransition实例,确保能追踪并控制已启动的动画。
  • stop()方法会立即终止动画;若希望动画完成当前周期再停止,可替换为pause()。
  • 重置缩放状态为可选操作,根据交互需求决定是否添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:45:23