簡體   English   中英

在JavaFx中的各個階段之間進行通信(使用* .fxml)

[英]Communicating between stages in JavaFx (using *.fxml)

我想編寫一個簡單的應用程序,當您單擊以關閉它時-新窗口(階段)向上推並詢問您是否確實需要它。 我知道它如何以編程方式實現,但不知道如何使用fxmlcontrollers來實現。

如果對於主應用程序階段和確認階段將使用單獨的controllers並且每個controller將僅映射到一個fxml文件,那么我如何將結果值從確認返回到主階段?

我認為您可能需要簡單的DialogAlert 如果您不喜歡默認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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM