2

特定のノードの FXML への参照を取得する方法があるかどうかを調べています。

たとえば、ビューを動的にロードしています。現在のコントローラーで参照されているペインがあるとします。

private void openView() {
    FXMLLoader loader = new FXMLLoader();
    Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
    pane.getChildren().add(node);
    node.requestFocus();
}

どのビューが開いていたかを保存して、次にウィンドウが開いたときにそれらを再起動できるようにしたいと思います。このようなもの:

private void saveOpenViews() {
    pane.getChildren().forEach(child -> {
        String fxmlLocation = child.getFXML();
        etc....
    }
}

開いていたものを元に戻す方法が見つからないようです...別の場所で手動で追跡する以外の方法があることを望んでいました。

ありがとう。

4

1 に答える 1

1

fxml からノードをロードするときに、関連する fxml 情報をノードuserDataに格納し、ノードがどの fxml に関連しているかを知る必要がある場合は、userdata を検索します。

private void openView() {
    FXMLLoader loader = new FXMLLoader();
    URL fxmlLocation = this.getClass().getResource("MyView.fxml");
    Parent node = loader.load(fxmlLocation.openStream());
    node.setUserData(fxmlLocation);
    pane.getChildren().add(node);
    node.requestFocus();
}

private void saveOpenViews() {
    pane.getChildren().forEach(child -> {
        URL fxmlLocation = (URL) child.getUserData();
        etc....
    }
}
于 2015-01-09T00:22:24.163 に答える