JavaFX Dialog一遍又一遍地返回相同的结果

时间:2016-04-01 08:59:15

标签: java javafx dialog

解决:我认为它不是JavaFX的错误,它是故意的,所以你可以从对话框中多次请求结果,如果你不想保存它变成一个变量。要刷新缓存,我在对话框中使用了setResult(null)。那为我完成了这项工作:)

我已经创建了一个Dialog来使用JavaFX编辑/创建Person。但我想我发现了一个错误。我在对话框中添加了两个ButtonType对象。一个用于保存,一个用于中止操作。当我使用这些按钮时它工作得很好。但是,如果我按下' X'要关闭对话框窗口,对话框会自动再次返回最后一个结果。这意味着如果我中止了我的最后一次动作并且在我当前的动作中,我按下' X'为了关闭窗口,对话框没有返回任何结果,因为中止按钮最后一次没有。但是,如果我按下上一次操作的保存按钮,我按下' X'在我当前的那个它再次返回同一个人,因为保存按钮上次在其结果中有这个人。如何在关闭时将对话框更改为无结果?

以下是我创建的动作:

   this.createPersonAction = new Callback<ButtonType, PersonSession>() {

        @Override
        public PersonSession call(final ButtonType param) {
            if (param.equals(PersonDialogController.this.saveButton)) {
                final String firstName = PersonDialogController.this.firstNameField.getText();
                final String lastName = PersonDialogController.this.lastNameField.getText();
                final Person p = BeanFactory.createPerson(firstName, lastName);
                if (p != null) {
                    return new PersonSession(p);
                }
            }
            return null;
        }
    };

这里有两个ButtonType-Objects:

private final ButtonType saveButton = new ButtonType(GuiStringRresource.LABEL_SAVE_BUTTON, ButtonData.OK_DONE);
private final ButtonType abortButton = new ButtonType(GuiStringRresource.LABEL_ABORT_BUTTON,
        ButtonData.CANCEL_CLOSE);

1 个答案:

答案 0 :(得分:1)

使用Dialog.setOnCloseRequest方法处理此案例。