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

JavaFX无需按钮自动切换场景出现ClassCastException异常如何解决

错误原因

  • 类型转换逻辑错误:PauseTransition的onFinished事件触发源是动画实例本身,不属于javafx.scene.Node类型,你代码中(Node) event.getSource()的强转逻辑不成立,这就是ClassCastException异常和IntelliJ提示的根本原因。
  • 变量作用域错误:你在try代码块内声明的Parent root是局部变量,仅在try块范围内有效,类的成员变量root始终没有被赋值,后续创建Scene时会触发空指针异常。

修正方案

直接使用FXML中已经注入的界面节点pane来获取当前窗口Stage即可,修正后代码如下:

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    PauseTransition pauseTransition = new PauseTransition(Duration.seconds(1.5));
    pauseTransition.setOnFinished(event -> {
        try {
            // 给类成员变量root赋值,不要重新声明局部变量
            root = FXMLLoader.load(getClass().getResource("p1GameScene.fxml"));
            // 用已注入的界面节点获取Stage
            stage = (Stage) pane.getScene().getWindow();
            scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    });
    pauseTransition.play();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:03