如何在没有 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
在控制器初始化和节点注入后执行。
在我的代码中,我可以使用这样的按钮切换到另一个场景:
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
在控制器初始化和节点注入后执行。