在JavaFx中的阶段之间进行通信(使用* .fxml)

时间:2015-08-30 09:03:10

标签: java javafx fxml

我想写一个简单的应用程序,当你点击关闭时 - 新窗口(阶段)向上推,并问你是否真的想要它。我知道它是如何以编程方式实现的,但不知道如何使用fxmlcontrollers来实现。

如果主要应用阶段和确认阶段将使用分开的controllers,并且每个controller将映射为一个fxml文件,我该如何将结果值从确认返回到主阶段?

1 个答案:

答案 0 :(得分:1)

我认为您可能需要简单的DialogAlert。如果您不喜欢Java Dialogs的默认外观,可以扩展DialogPane(或Dialog本身),将其设计为FXML,将<h1>New product</h1> <% form_for(@product) do |f| %> <%= f.error_messages %> <p> <%= f.label :title %><br /> <%= f.text_field :title %> </p> <p> <%= f.label :description %><br /> <%= f.text_area :description, :rows => 6 %> </p> <p> <%= f.label :image_url %><br /> <%= f.text_field :image_url %> </p> <p> <%= f.label :price %><br /> <%= f.text_field :price %> </p> <p> <%= f.submit "Create" %> </p> <% end %> <%= link_to 'Back', products_path %> 设计为Dialog。

以下是如何从简单的警报创建,显示和获取结果而没有任何花哨的外观:

setDialogPane

关闭主舞台的部分。您可以拦截并处理关闭请求。

Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.showAndWait().ifPresent(response -> {
 if (response == ButtonType.OK) {
     System.out.println("User clicked OK");
 }
});

通过使用该事件,您可以根据需要阻止关闭阶段。

因此,如果您想要来自用户的确认,只需将Alert置于onCloseRequest处理中并在他下定决心时使用该事件(点击取消)。