首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我单击菜单项时,如何显示JavaFX网页视图?

当我单击菜单项时,如何显示JavaFX网页视图?
EN

Stack Overflow用户
提问于 2018-09-24 18:52:31
回答 1查看 33关注 0票数 1

在我的应用程序中,我希望用户能够单击菜单项并显示一个新窗口。但是,当我运行我的代码时,它说您可以从菜单项中打开一个新窗口。所以我的问题是,是否有其他的工作,或其他更简单的方式为我完成我的目标。谢谢你的帮助。

P.S ->我之前发布了一个类似的问题,但在复制正确的代码时犯了错误。这是我得到的正确错误和代码。

代码:

代码语言:javascript
运行
复制
    /**
 * 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();

}

异常:

代码语言:javascript
运行
复制
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)
EN

Stack Overflow用户

发布于 2018-09-24 19:15:27

问题在于如何创建Stage

代码语言:javascript
运行
复制
Stage app_stage = (Stage) ((Node) actionEvent.getSource()).getScene().getWindow();

您正在尝试将MenuItem转换为Node,但这不是它的工作方式。

您还需要创建一个新的Stage,所以不要尝试获取原始的Window

代码语言:javascript
运行
复制
Stage app_stage = new Stage()

然后从那里构建Scene

边注:我推荐阅读一些好的JavaFX教程来学习基础知识。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52485611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档