解决:我认为它不是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);
答案 0 :(得分:1)
使用Dialog.setOnCloseRequest
方法处理此案例。