我有一个登录界面,我想从LoginController中的MainController通过登录ID,这样我就可以访问某些功能更改密码和诸如此类的东西。
我加载像这样的控制器:
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,并访问控制器的初始化()方法?
与FXMLLoader加载控制器后,有可能被调用的显示()方法之前调用用于所述控制器的成员。 一个人必须获得基准只是调用控制器,并呼吁从那里set()方法(或直接访问属性,如果定义公共)。
从该示例中,我们假设与Main.fxml相关联,所述控制器被称为MainController,和MainController具有USER_ID属性,定义为int。 其设置方法是SETUSER(INT用户)。 所以,从LoginController中类:
LoginController.java:
// User ID acquired from a textbox called txt_user_id
int user_id = Integer.parseInt(this.txt_user_id.getText());
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/Main.fxml"));
Parent root = (Parent)fxmlLoader.load();
MainController controller = fxmlLoader.<MainController>getController();
controller.setUser(user_id);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
MainController.java:
public void setUser(int user_id){
this.user_id = user_id;
}
MainController.java:
//You may need this also if you're getting null
@FXML private void initialize() {
Platform.runLater(() -> {
//do stuff
});
}