Java 如何在没有鼠标/拖动/等事件的情况下切换到新场景?

Java 如何在没有鼠标/拖动/等事件的情况下切换到新场景?,java,javafx,fxml,Java,Javafx,Fxml,在我的代码中,我可以使用如下按钮切换到另一个场景: public void handleButtonClick(MouseEvent event) throws IOException { Parent menu_parent = FXMLLoader.load(getClass().getResource("/FXML/FXMLmm2.fxml")); Scene SceneMenu = new Scene(menu_parent); Stage

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

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();
}

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

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();
        }
问题是,我不知道如何获得舞台的节点,只有当我打开一个全新的舞台/窗口时,这个程序才起作用


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

您可以使用控制器类中的任何
@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

问题在于此场景不包含任何按钮,只包含一个包含ImageView的网格窗格。你是说show按钮是用户看不见的虚拟按钮,只能通过showResult()方法激活?虚拟按钮?不我打算使用任何注入的节点,这意味着用
@FXML
注释。在您的例子中,似乎已经注入了图像视图和网格窗格。你可以用任何一个。您可以使用
@FXML
变量更新您的问题-这样我可以在我的答案中反映出来