如何有条理地正确反应按下对话框按钮?

时间:2017-06-21 14:19:16

标签: dialog javafx-8

我有一个对话框,按下" OK"按钮我必须验证对话框中的输入。如果验证失败,我想显示一个警告并保持对话框打开。

我该如何检查?如果我添加了一个结果转换器,如果条件不满足,会将ButtonType转换为null,我就不会得到想要的行为。

到目前为止,我在这里看到两种可能性:

  1. 我可以在相应的按钮中添加一个事件过滤器:

    dialog.getDialogPane().lookupButton(type)
        .addEventFilter(ActionEvent.ACTION, event -> {
            if (conditions not fulfilled) {
                event.consume();
            }
    });
    

    这样,如果验证失败,按钮就不会触发。 这似乎有效,但我觉得必须有另一种方法来达到我的目标,这更接近于对话框的内容"本身。

  2. 通过关闭请求事件。 在这里,文档说,关闭事件仅与"外部"相关。关闭事件,例如按ESC或单击对话框标题栏中的X按钮。 此外,我必须注意在继续之前将result属性重置为null并防止再次关闭。

  3. 通过任何其他对话框事件。  在这里,我还没有找到一个能够在消耗时停止这个过程的元素 - DIALOG_SHOWING不是DIALOG_SHOWN,DIALOG_HIDING和DIALOG_HIDDEN似乎都没有。

  4. 我错过了什么?

0 个答案:

没有答案