【问题标题】:Determining window in which a menu item is clicked确定单击菜单项的窗口
【发布时间】:2014-01-29 06:39:39
【问题描述】:

玩弄我的第一个 JavaFX 应用程序。在 Java8 上运行它,但这不应该是关于这个问题的问题。

我的问题: 我有一个场景(FXML),其中存在菜单和菜单项。当一个人按下一个菜单项时,应该会显示一个新窗口或弹出窗口。这工作得很好,但我想在新窗口处于活动状态时禁用父窗口。想通这是可能的模态。 我真正的问题是:从我收到的动作事件中确定父窗口。因为事件来自菜单项,所以似乎有点问题。可能是一个非常愚蠢的问题。

我的代码sn-p:

Stage stage = new Stage();
Parent root = FXMLLoader.load(EbooksdownloaderController.class.getResource("about.fxml"));
stage.setScene(new Scene(root));
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(((Node)event.getSource()).getScene().getWindow());
stage.show();

将源转换为节点会产生类转换异常。但我不知道该走哪条路。

谢谢。

【问题讨论】:

  • 你得到什么异常?您是否尝试过调试如何从事件源访问节点?
  • 这是一个类转换异常,说明不能将 MenuItem 转换为节点。
  • 是的。从那个线程我得到了我当前的非工作解决方案。问题与行为不同的菜单有关,例如一个普通的按钮。

标签: java javafx-8


【解决方案1】:

折腾了好久都没有成功。 作为最后的手段,我使用以下代码完成了它:

@FXML
private AnchorPane ap;

Stage stage = new Stage();
Parent root = FXMLLoader.load(EbooksdownloaderController.class.getResource("about.fxml"));
stage.setScene(new Scene(root));
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(ap.getScene().getWindow());
stage.show();

不是我喜欢的方式。但它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2014-10-14
    • 2011-11-14
    相关资源
    最近更新 更多