Ответ 1
После загрузки контроллера с помощью FXMLLoader можно вызвать участников указанного контроллера до вызова метода show(). Нужно получить ссылку на только что вызванный контроллер и вызвать метод set() оттуда (или получить доступ к атрибуту напрямую, если он определен публично).
В примере предположим, что контроллер, связанный с Main.fxml, называется MainController, а MainController имеет атрибут user_id, определенный как int. Его метод set - setUser (int user). Итак, из класса 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;
}