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

JavaFX赛车程序如何通过回车键替代按钮点击触发比赛开始

JavaFX赛车游戏回车键启动比赛实现方案

具体修改方法

  • 先在代码导入区域新增键盘按键类的导入:import javafx.scene.input.KeyCode;
  • 修正原代码笔误:原代码中的bnt.setOnAction是拼写错误,需要改为btn.setOnAction
  • 我们直接给场景(Scene)绑定键盘按下事件监听器,判断触发的按键是回车键时,就执行所有动画的播放逻辑。监听器绑定到Scene上的好处是只要游戏窗口处于激活状态,无论当前焦点在哪个控件上,按下回车都能正常触发,兼容性最好。
  • 如果你不需要保留点击按钮启动的功能,可以直接删除原有btn.setOnAction相关的代码。

修改后的核心代码片段

// 导入区新增这行
import javafx.scene.input.KeyCode;

// ... 中间赛车、车轮、动画定义的原有代码不需要改动

// 原有按钮点击事件可以保留(不需要就删掉)
btn.setOnAction(e -> {
    pt1.play();
    pt2.play();
    pt3.play();
    pt4.play();
    pt5.play();
    pt6.play();
    pt7.play();
    pt8.play();
    pt9.play();
});

pane.getChildren().addAll(btn, p1, p2, p3, wheel1, wheel2, wheel3, wheel4, wheel5, wheel6, l1, l2, l3);

Scene scene = new Scene(pane, 1100, 370);
// 新增回车键触发逻辑
scene.setOnKeyPressed(event -> {
    if (event.getCode() == KeyCode.ENTER) {
        pt1.play();
        pt2.play();
        pt3.play();
        pt4.play();
        pt5.play();
        pt6.play();
        pt7.play();
        pt8.play();
        pt9.play();
        // 可选:如果要避免比赛过程中重复按回车导致动画重置,可以在这里加个标记位判断,触发后标记为已启动,下次就不执行
    }
});

primaryStage.setTitle("Cars Racing"); 
primaryStage.setScene(scene); 
primaryStage.show();

可选优化

你可以新增一个boolean isRunning = false;的成员变量,触发动画前先判断isRunning为false才执行,执行后把isRunning设为true,就能避免重复按回车导致动画反复重启的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:07