2013-01-24 62 views
4

我有兩個場景Login.fxml和MainView.fxml和兩個diferent控制器LoginController.java和MainViewControler.java我如何使用一個變量從另一個控制器中的JavaFX

在LoginController中我做的全過程登錄並得到JSESSIONID的值,並將其存儲在一個對象,象下面這樣:

loginGateway = loginGateway(gateway); 

現在MainViewController我需要使用這個對象(loginGateway)以getJSessionID並進行其他對服務器的請求。但我怎樣才能在另一個控制器類(MainViewController.java)中訪問此對象?

回答

7

Passing Parameters JavaFX FXML中使用解決方案的變體。

設置一個LoginManager,它既參考LoginControllerMainViewController

  1. loginManager創建使用loginController的登錄畫面,並傳遞到自身的引用到loginController
  2. 當登錄通過時,loginController通知loginManager登錄sessionID
  3. 然後,loginManager可以創建MainViewController,傳遞mainViewControllersessionID並用主視圖替換場景內容。

這裏是鏈接到some sample code來演示這種方法。 login screen mainview screen

+0

你測試了嗎?因爲我不得不修復一些東西來構建它,但仍然沒有運行。例如: FXMLLoader loader = new FXMLLoader(「mainview.fxml」); MainViewController controller = loader.MainViewController> getController(); controller.initSessionID(sessionID); scene.setRoot(loader.load());我想應該是: –

+0

FXMLLoader loader = FXMLLoader.load(getClass()。getResource(「MainView.fxml」)); MainViewController controller =(MainViewController)loader。 getController(); controller.initSessionID(sessionID); scene.setRoot(loader.load()); 儘管最後一行是scene.setRoot(loader.load());繼續顯示錯誤的東西(類的場景中的方法setRoot不能應用於給定的類型;必須:父類,找到:對象,原因:實際參數對象不能通過方法調用轉換轉換爲父類) 能否幫助我多一次??請。 –

+0

我剛剛粘貼了一個未編譯的代碼片段來顯示一般方法。我將通過帶有fxml文件的編譯器來運行所有內容,並且所有內容都可以生成新版本,您可以複製並粘貼來執行 - 但這需要我一些時間。完成後我會回覆。 – jewelsea

相關問題