JavaFX对话框一次又一次地返回相同的结果



解决:我认为这不是JavaFX的错误,它是故意这样做的,所以如果你不想将结果保存到变量中,你可以多次从对话框中请求结果。为了刷新缓存,我在对话框中使用了setResult(null)。这对我来说很好:)

我已经创建了一个对话框来使用JavaFX编辑/创建一个人。但我想我发现了一个bug。我在对话框中添加了两个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;
        }
    };

这里有我的两个按钮类型对象:

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);

使用Dialog.setOnCloseRequest方法来处理这种情况。

最新更新