java JavaFX获取我的应用程序的primaryStage(主菜单)
我正在尝试用JavaFX和SceneBuilder实现一个应用程序
我用不同的按钮制作了一个主菜单,每个按钮都指向不同的页面
例如,当我点击第一个按钮时,我想切换到一个新的面板,然后,如果我想回到上一个面板,我只需点击我得到的第二个面板上的“后退”按钮
第一步,当我点击按钮时有一个新的页面,是可以的。现在的问题是实现“后退”按钮。我想点击它,并有上一个面板,但我没有找到一个解决方案
以下是代码:
我的应用程序的启动方法(OrderCheck.java)
@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
FXMLLoader myLoader = new FXMLLoader(getClass().getResource("OrderCheck.fxml"));
Pane myPane = (Pane)myLoader.load();
primaryStage.setTitle("Main Menu");
OrderCheckController controller = (OrderCheckController) myLoader.getController();
controller.setPrevStage(primaryStage);
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
主面板上1个按钮的onAction示例:(OrderCheckController.java):
public void personalButtonAction(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Personal Menu");
AnchorPane myPane = null;
myPane = FXMLLoader.load(getClass().getResource("Personal.fxml"));
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
stage.show();
}
单击新视图中的后退按钮(PersonalController.java)时,该按钮的实现示例:
public void backButtonAction(ActionEvent event) throws IOException {
Stage stageTheLabelBelongs = (Stage) backButton.getScene().getWindow();
setPrevStage(stageTheLabelBelongs);
prevStage.close();
stageTheLabelBelongs.show();
}
setPrevStage(Stage阶段)方法在两个控制器(OrderCheckController和PersonalController)中都实现
public void setPrevStage(Stage stage){
this.prevStage = stage;
}
所以现在,当我点击新页面上的“后退”按钮时,窗口将快速关闭并再次打开,因为什么都没有发生
# 1 楼答案
如果您有像用户Sudip Saha这样的主类,那么只需在使用Back按钮的控制器中生成方法goBack()
goBack()方法:
之后,只需在场景生成器的“后退”按钮中调用goBack()方法
# 2 楼答案
试试这个。在我的应用程序中,我是这样指初级阶段的
从其他控制器,您可以使用
JavaFXApplication.primaryStage
访问它