FXMLLoader でコントローラーをロードした後、show() メソッドが呼び出される前に、そのコントローラーのメンバーを呼び出すことができます。呼び出したコントローラーへの参照を取得し、そこから set() メソッドを呼び出す必要があります (パブリックに定義されている場合は、属性に直接アクセスします)。
この例から、Main.fxml に関連付けられたコントローラーが MainController と呼ばれ、MainController には int として定義された userId 属性があると仮定します。その set メソッドは setUser(int user) です。したがって、LoginController クラスから:
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();
MainController.java:
public void setUser(int userId){
this.userId = userId;
}
MainController.java:
//You may need this also if you're getting null
@FXML private void initialize() {
Platform.runLater(() -> {
//do stuff
});
}