javafx.scene.layout.Pane无法强制转换为javafx.fxml.FXMLLoader

我在尝试从场景切换到另一个场景时遇到了麻烦。 场景是这样的:

当前视图和控制器login.fxmlLoginController

下一步查看和控制器loggedWindow.fxmlUserPanelController


现在,我在LoginController并尝试将场景切换到loggedWindow.fxml发送给UserPanelController一个参数,但是当我使用我的代码时,我得到:

 javafx.scene.layout.Pane cannot be cast to javafx.fxml.FXMLLoader 

的LoginController:

 FXMLLoader loggedWindow = null; loggedWindow = FXMLLoader.load(getClass().getResource("loggedWindow.fxml")); // here crashes! Pane root = loggedWindow.load(); UserPanelController controller = loggedWindow.getController(); controller.initData(customer); Stage switchScene = (Stage)((Node)event.getSource()).getScene().getWindow(); switchScene.setResizable(false); switchScene.setTitle("Welcome " + customer.FirstName + " " + customer.LastName); switchScene.setScene(new Scene(root, 800, 500)); switchScene.show(); 

LoggedWindow.fxml

     . . stuff (buttons/labels and so on). . .  

我将不胜感激任何帮助! 提前致谢。

更新1

还考虑了这个参考: 访问FXML控制器类

您正在使用FXMLLoader的“load”方法,该方法返回.fxml文件的根节点。 在那种情况下,它将返回您的窗格。

你应该用它来创建你的场景!

请参阅JavaFX教程中给出的示例,如:

 Pane root = FXMLLoader.load(getClass().getResource("loggedWindow.fxml")); Scene scene = new Scene(root, width, height, color); 

其他方式,取自我的一个旧代码,使用非静态FXMLLoader:

 FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlFile)); Parent root; try { root = loader.load(); } catch (IOException ioe) { // log exception return; } // Color.TRANSPARENT allows use of rgba colors (alpha layer) setScene(new Scene(root, Color.TRANSPARENT));