[英]Communicating between stages in JavaFx (using *.fxml)
我想編寫一個簡單的應用程序,當您單擊以關閉它時-新窗口(階段)向上推並詢問您是否確實需要它。 我知道它如何以編程方式實現,但不知道如何使用fxml
和controllers
來實現。
如果對於主應用程序階段和確認階段將使用單獨的controllers
並且每個controller
將僅映射到一個fxml
文件,那么我如何將結果值從確認返回到主階段?
我認為您可能需要簡單的Dialog或Alert 。 如果您不喜歡默認Java對話框的外觀,則可以擴展DialogPane(或Dialog本身),在FXML中設計它,然后將setDialogPane
為Dialog。
這是如何從簡單的Alert中創建,顯示和獲取結果而沒有任何花哨的外觀:
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.showAndWait().ifPresent(response -> {
if (response == ButtonType.OK) {
System.out.println("User clicked OK");
}
});
到關閉主舞台的部分。 您可以攔截和處理關閉請求。
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
System.out.println("I will not close");
event.consume();
}
});
通過使用事件,可以根據需要防止舞台關閉。
因此,如果您希望得到用戶的確認,只需將Alert置於onCloseRequest處理中,並在他下定決心時使用該事件(單擊以取消)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.