如何在JavaFX中使用来自另一个Controller的变量

Vic*_*rte 4 java controller javafx viewcontroller javafx-2

我有两个场景Login.fxml和MainView.fxml以及两个不同的控制器LoginController.java和MainViewControler.java

在LoginController中,我执行整个登录过程并获取JSessionID的值并将其存储在对象中,如下所示:

loginGateway = loginGateway(gateway);
Run Code Online (Sandbox Code Playgroud)

现在在MainViewController中我需要使用this对象(loginGateway)来获取getJSessionID并向服务器发出其他请求.但是如何在另一个Controller类(MainViewController.java)中访问此对象?

jew*_*sea 7

传递参数JavaFX FXML中使用解决方案的变体.

设置一个LoginManager引用同时LoginControllerMainViewController.

  1. 使用loginManager创建登录屏幕loginController并将对自身的引用传递给loginController.
  2. 登录过后,loginController通知loginManager登录sessionID.
  3. 所述loginManager然后可以创建MainViewController,传递mainViewControllersessionID和与主视图替换场景内容.

以下是一些示例代码的链接,以演示此方法. 登录界面 主视图屏幕