如何在没有 Mouse/Drag/etc 的情况下切换到新场景。事件?

How to switch to new scenes without an Mouse/Drag/etc. event?

在我的代码中,我可以使用这样的按钮切换到另一个场景:

public void handleButtonClick(MouseEvent event) throws IOException {
        Parent menu_parent = FXMLLoader.load(getClass().getResource("/FXML/FXMLmm2.fxml"));
        Scene SceneMenu = new Scene(menu_parent);
        Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
        stage.setScene(SceneMenu);
        stage.show();
}

现在我在控制器中有一个方法 class 它应该打开一个没有事件的场景:

public void showResult(boolean win) throws IOException {
        if (win == true) {
            Parent menu_parent = FXMLLoader.load(getClass().getResource("/FXML/FXMLWinScreen.fxml"));
            Scene SceneMenu = new Scene(menu_parent);
            Stage stage = new Stage();
            stage.setScene(SceneMenu);
            stage.show();
        }

问题是,我不知道如何获取舞台的节点,这个程序只有在我打开一个全新的 stage/window.

如何在没有事件和打开新舞台的情况下切换到新场景?

您可以使用来自控制器 class、

的任何 @FXML 注入节点

假设您有一个按钮

@FXML private Button show;

现在使用该按钮 show.getParent().getScene().getWindow() 获取当前阶段,

public void showResult(boolean win) throws IOException {
    if (win == true) {
        Parent menu_parent = FXMLLoader.load(getClass()
                               .getResource("/FXML/FXMLWinScreen.fxml"));
        Scene SceneMenu = new Scene(menu_parent);
        Stage stage = (Stage)show.getParent().getScene().getWindow();
        stage.setScene(SceneMenu);
        stage.show();
    }
}

但请确保 showResult 在控制器初始化和节点注入后执行。