2015-08-30 64 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处理中,并且如果他决定使用该事件(点击取消)就可以使用该事件。

相关问题