提问者:小点点

如何在FXML控制器中获取父窗口?


例如,我想在单击按钮时打开DirectoryChooser:

<VBox fx:controller="com.foo.MyController"
    xmlns:fx="http://javafx.com/fxml">
    <children>
        <Button text="Click Me!" onAction="#handleButtonAction"/>
    </children>
</VBox>

以及Controller类:

package com.foo;

public class MyController {
    public void handleButtonAction(ActionEvent event) {
        DirectoryChooser dc = new DirectoryChooser();
        File folder = dc.showDialog(null);//I want to put the WIndows here.
    }
}

我想将主窗口放在 ShowDialog 上,以便它将被阻止,但我如何访问它?


共1个答案

匿名用户

您可以向任何节点请求< code >场景,然后调用< code >场景#getWindow()。

((Node) event.getTarget()).getScene().getWindow()

从@osvein如果这是菜单项的处理程序,它应该是:

((MenuItem) event.getTarget()).getParentPopup().getOwnerWindow()