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