我有一个登录屏幕,我想将登录 ID 从 LoginController 传递到 MainController,这样我就可以访问一些功能来更改密码等。
我像这样加载控制器:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/Main.fxml"));
Parent root = (Parent)fxmlLoader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
Main.fxml 绑定到 MainController.java。
有没有办法可以传递我需要的用户ID,并在控制器的initialize()方法上访问它?
使用 FXMLLoader 加载控制器后,可以在调用 show() 方法之前调用该控制器的成员。必须获取对刚刚调用的控制器的引用,并从那里调用 set() 方法(或者直接访问该属性,如果定义为公共)。
从示例中,我们假设与 Main.fxml 关联的控制器称为 MainController,并且 MainController 有一个定义为 int 的 userId 属性。它的设置方法是setUser(int user)。因此,从 LoginController 类:
登录控制器.java:
// User ID acquired from a textbox called txtUserId
int userId = Integer.parseInt(this.txtUserId.getText());
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/Main.fxml"));
Parent root = (Parent)fxmlLoader.load();
MainController controller = fxmlLoader.<MainController>getController();
controller.setUser(userId);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
主控制器.java:
public void setUser(int userId){
this.userId = userId;
}
主控制器.java:
//You may need this also if you're getting null
@FXML private void initialize() {
Platform.runLater(() -> {
//do stuff
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)