无法将javafx.scene.layout.Pane转换为javafx.fxml.fxmloader
我在尝试从一个场景切换到另一个场景时遇到问题。情况是这样的: 当前视图和控制器:无法将javafx.scene.layout.Pane转换为javafx.fxml.fxmloader,java,javafx,Java,Javafx,我在尝试从一个场景切换到另一个场景时遇到问题。情况是这样的: 当前视图和控制器:login.fxml和LoginController 下一步视图和控制器:loggedWindow.fxml和UserPanelController 现在,我在LoginController中,试图将场景切换到loggedWindow.fxml向UserPanelController发送一个参数,但当我使用代码时,我得到: javafx.scene.layout.Pane cannot be cast to jav
login.fxml
和LoginController
下一步视图和控制器:loggedWindow.fxml
和UserPanelController
现在,我在
LoginController
中,试图将场景切换到loggedWindow.fxml
向UserPanelController
发送一个参数,但当我使用代码时,我得到:
javafx.scene.layout.Pane cannot be cast to javafx.fxml.FXMLLoader
登录控制器:
LoggedWindow.fxml
.
.
材料(按钮/标签等)。
.
.
我将感谢任何帮助!提前谢谢
更新1
还考虑了此引用:您正在使用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));
首先创建一个实例:
fxmloader loggedWindow=newfxmloader(getClass()…)
,然后可以加载fxml文件窗格root=loggedWindow.load()代码>听起来很有趣。但是,我想知道我是否可以在type窗格
中使用getController()
方法,因为我尝试了,但没有成功..:-?如果需要控制器,则需要调用FXMLLoader实例的getController()。在这种情况下,如果我们看我的第二个示例,将看到loader.getController()。
Pane root = FXMLLoader.load(getClass().getResource("loggedWindow.fxml"));
Scene scene = new Scene(root, width, height, color);
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));