2015-08-30 44 views
0

我想編寫一個簡單的應用程序,當你點擊關閉 - 新窗口(舞臺)向上推,問你是否真的需要它。我知道它是如何編程實現的,但不知道如何使用fxmlcontrollers來實現。在JavaFx中的階段之間進行通信(使用* .fxml)

如果主要應用階段和確認階段將使用分開的controllers和每個controller將映射爲一個fxml文件只能如何返回從確認到主階段的結果值?

回答

1

我想你可能需要簡單的DialogAlert。如果您不喜歡默認的Java對話框的外觀,您可以擴展DialogPane(或對話框本身),將它設計爲FXML和setDialogPane到您的對話框。

這裏是如何創建,顯示和獲得從簡單的警報導致沒有任何花哨的樣子:

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處理中,並且如果他決定使用該事件(點擊取消)就可以使用該事件。