web-dev-qa-db-ja.com

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に配置してブロックされるようにしたいのですが、どうすればアクセスできますか?

23
nvcnvn

任意のノードにSceneを要求してから、Scene#getWindow()を呼び出すことができます。

例えば。 ((Node)event.getTarget()).getScene().getWindow()

46
Sergey Grinev