0
我的JavaFX應用程序有一點問題,我想從主類調用控制器中的方法,但它不起作用。JavaFX調用主類中的控制器方法
我想這Accessing FXML controller class 這How do I access a UI element from another controller class in JavaFX?
但它不工作。
所以,在我的應用程序有一個主窗口,並從那裏我可以打開第二個窗口,當我關閉第二窗口,我想打電話給主控制器的方法用於更新一些元素..
我的主類有這兩個窗口:
@Override
public void start(Stage primaryStage) throws IOException {
this.primaryStage = primaryStage;
mainWindow();
public void mainWindow() {
try {
FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("/App.fxml"));
Parent root = loader.load();
AppController appController = loader.getController();
appController.setMain(this);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public void secondWindow() throws IOException {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("SecondWindow.fxml"));
Parent root = loader.load();
Stage stage = new Stage();
SecondWindowController secondWindowController = loader.getController();
secondWindowController.setStage(stage);
stage.initOwner(primaryStage);
stage.initModality(Modality.WINDOW_MODAL);
stage.setScene(new Scene(root));
stage.show();
stage.setOnCloseRequest(event -> {
event.consume();
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setHeaderText("close?");
alert.initOwner(stage);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK){
// Here I want to call the method to update in the AppController
stage.close();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
有沒有辦法在那裏調用該方法?
哦,謝謝你,這是很容易的。第二個窗口被稱爲在AppController中,現在我給欣「這個「並獲得參考。 – Dusius