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
相关产品推荐
相关产品推荐

