有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX在主阶段关闭时关闭任何其他阶段,但允许它们隐藏在主阶段后面

假设我创建的第二个窗口有以下代码:

    stage.initModality(Modality.NONE);
    stage.initOwner(coreController.getStage());

如果我这样做,它会在我的主窗口关闭时关闭

如果我注释掉stage.initOwner(coreController.getStage());,那么它将能够隐藏在主面板后面,但不会关闭

当我杀死主舞台时,有没有办法让它关闭没有编写代码来跟踪创建的每个新窗口?到目前为止,我唯一的选择似乎是在列表中注册每个新窗口,当主窗口触发“关闭事件”时,我也会为所有其他窗口触发该事件。有没有办法不用我进去把所有的东西都连接起来

编辑:我使用了模态。没有,因此窗口不会阻止任何事件,但我不知道这是否与问题有关

编辑2:我希望在退出主窗口时关闭所有窗口(如果我可以拦截关闭事件并进行清理,这将是一个额外的好处)


共 (1) 个答案

  1. # 1 楼答案

    如果我正确理解了这个问题,你可以在主舞台关闭时,为你需要关闭的每个舞台打电话给initOwner(mainStage)

    只是添加了对Oracle文档的引用,这就解释了为什么initOwner(mainStage)不适合这种情况:

    A stage can optionally have an owner Window. When a window is a stage's owner, it is said to be the parent of that stage. When a parent window is closed, all its descendant windows are closed. The same chained behavior applied for a parent window that is iconified. A stage will always be on top of its parent window. The owner must be initialized before the stage is made visible.

    发件人:https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Stage.html#initOwner-javafx.stage.Window-