在我的应用程序中,我希望用户能够单击菜单项并显示一个新窗口。但是,当我运行我的代码时,它说您可以从菜单项中打开一个新窗口。所以我的问题是,是否有其他的工作,或其他更简单的方式为我完成我的目标。谢谢你的帮助。
P.S ->我之前发布了一个类似的问题,但在复制正确的代码时犯了错误。这是我得到的正确错误和代码。
代码:
/**
* When the Logger menu item is clicked, then it will execute and make a new window
* @param actionEvent
* @throws Exception
*/
public void clickedLoggerMenu(ActionEvent actionEvent) throws Exception {
//The name of the controller
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/viewer_logger.fxml"));
Parent home_page = (Parent) loader.load();
LoggerController logController = loader.getController();
//this sets the scene
Scene home_page_scene = new Scene(home_page, 650, 580);
Stage app_stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();
app_stage.setScene(home_page_scene);
app_stage.show();
}异常:
Caused by: java.lang.ClassCastException: javafx.controls@10.0.1/javafx.scene.control.MenuItem cannot be cast to javafx.graphics@10.0.1/javafx.scene.Node
at controller.SubmitController.clickedLoggerMenu(SubmitController.java:99)发布于 2018-09-24 19:15:27
问题在于如何创建Stage
Stage app_stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();您正在尝试将MenuItem转换为Node,但这不是它的工作方式。
您还需要创建一个新的Stage,所以不要尝试获取原始的Window。
Stage app_stage = new Stage()然后从那里构建Scene。
边注:我推荐阅读一些好的JavaFX教程来学习基础知识。
https://stackoverflow.com/questions/52485611
复制相似问题