【问题标题】:JavaFX Dialog returns same result over and over againJavaFX Dialog 一遍又一遍地返回相同的结果
【发布时间】:2016-04-01 08:59:14
【问题描述】:

已解决:我认为这不是 JavaFX 的错误,它是故意这样做的,因此如果您不想将结果保存到变量中,可以从对话框中多次请求结果.为了刷新缓存,我在对话框中使用了 setResult(null)。这为我完成了工作:)

我创建了一个对话框来使用 JavaFX 编辑/创建一个人。但我想我发现了一个错误。我在对话框中添加了两个 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-Object:

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

【问题讨论】:

    标签: java javafx dialog


    【解决方案1】:

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

    【讨论】:

    • 我找到了一种以不同方式解决我的问题的方法。在上面的编辑中提到了它。谢谢你
    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2020-07-19
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多