javafx.scene.layout.Pane无法强制转换为javafx.fxml.FXMLLoader
我在尝试从场景切换到另一个场景时遇到了麻烦。 场景是这样的:
当前视图和控制器 : login.fxml
和LoginController
下一步查看和控制器 : loggedWindow.fxml
和UserPanelController
。
现在,我在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));
- 无法在glassfish 3.1中将字符集从ISO-8859-1更改为UTF-8
- Java Thread.stop()vs Thread.interrupt()
- Box2D – 无法破坏多个灯具
- Java:使用NIO和System.in
- 我怎样才能看到java正在使用哪个垃圾收集器
- 警告ArrayList是原始类型。 对generics类型ArrayList 的引用应该参数化
- Gradle不尊重JDK9中的–add-modules jvm参数
- Hibernate 3.5.x:NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval
- Spring MVC,从服务层的安全上下文中获取主体