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



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

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在控制器初始化和注入节点后执行。

相关内容

最新更新