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

JavaFX登录场景切换报错:BorderPane无法转换为FXMLLoader

JavaFX登录场景跳转类型转换错误修复

错误信息

class javafx.scene.layout.BorderPane cannot be cast to class javafx.fxml.FXMLLoader (javafx.scene.layout.BorderPane is in module javafx.graphics of loader 'app'; javafx.fxml.FXMLLoader is in module javafx.fxml of loader 'app')

错误原因

问题出在changeSceneWelcome方法的第一行:FXMLLoader loader = FXMLLoader.load(getClass().getResource(fxml));。

FXMLLoader.load()是静态方法,返回值是FXML文件对应的根节点(比如这里的BorderPane),而非FXMLLoader实例。强行将根节点赋值给FXMLLoader类型变量,直接触发类型转换异常。

修复后的代码

public class HelloApplication extends Application {
    private static Stage stg;

    public static void main(String[] args) {
        launch();
    }

    @Override
    public void start(Stage stage) {
        try {
            stg = stage;
            stage.setResizable(false);
            Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
            stage.setTitle("Login");
            stage.setScene(new Scene(root, 600, 340));
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void changeSceneWelcome(String fxml, String username) {
        try {
            // 1. 创建FXMLLoader实例,传入FXML资源路径
            FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml));
            // 2. 调用实例的load()方法加载FXML,获取根节点
            Parent pane = loader.load();
            // 3. 从loader实例获取对应的控制器
            AfterLoginController afterLoginController = loader.getController();
            afterLoginController.welcomeName(username);
            
            stg.setResizable(false);
            stg.setTitle("Welcome!");
            stg.setScene(new Scene(pane, 800, 600));
            stg.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键修复点

  • 替换静态FXMLLoader.load()调用为实例化FXMLLoader对象,才能后续获取控制器
  • 必须先调用loader.load()加载FXML内容,再调用loader.getController(),否则控制器会返回null
  • 确保FXML文件中已通过fx:controller属性正确指定AfterLoginController

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:30:07