我明白如何傳遞兩種形式之間的值ala https://www.youtube.com/watch?v=HFAsMWkiLvg通過fxml設置的兩個JavaFX窗口之間傳遞值?
問題在於它在視頻中的做法。 (作爲靜態)。由於使用了getClass()方法,我無法在靜態方法內部使FXMLLoaders工作。它只是非靜態的。 getClass().getResource("myFile.fxml")
這裏是我怎麼裝我的第二個形式。
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("LoginForm.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setTitle("HWI - Login");
stage.setResizable(false);
stage.setScene(new Scene(root1));
stage.showAndWait();
} catch (Exception e) {
e.printStackTrace();
}
在scenebuilder裏面我設置了要運行的方法,它在本質上是檢查用戶名/密碼的數據庫。所有這些都是在我的loginController類中完成的。一旦成功,它會這樣做。 (以上我有申報loginButton我@FXML鉤)
Stage stage = (Stage) loginButton.getScene().getWindow();
stage.close();
當前的方式我有程序的設置是,所有的菜單都設置爲禁用用戶在簽署之前,我有一個非靜態方法已經設置爲重新啓用一切,但我無法調用它,因爲我無法在關閉第二個窗口之前彌補靜態/非靜態之間的差距。
謝謝,
'getResource'方法可以在靜態的方式來使用:'ExampleClass.class.getResource'但也有比靜態控制器類更好的方法。見http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml和http://stackoverflow.com/questions/40117925/javafx-many-static-fxml-controllers – Omid
這通常是一個非常糟糕的主意,使控制器中的任何東西(除了常量)都是靜態的。我不清楚你想要做什麼:你想從登錄控制器到主控制器進行通信,反之亦然? (第二個很容易,第一個有點棘手,所以如果是第一個,請確切地說明*你想要溝通什麼)。 –