我有一个对话框,按下" OK"按钮我必须验证对话框中的输入。如果验证失败,我想显示一个警告并保持对话框打开。
我该如何检查?如果我添加了一个结果转换器,如果条件不满足,会将ButtonType
转换为null
,我就不会得到想要的行为。
到目前为止,我在这里看到两种可能性:
我可以在相应的按钮中添加一个事件过滤器:
dialog.getDialogPane().lookupButton(type)
.addEventFilter(ActionEvent.ACTION, event -> {
if (conditions not fulfilled) {
event.consume();
}
});
这样,如果验证失败,按钮就不会触发。 这似乎有效,但我觉得必须有另一种方法来达到我的目标,这更接近于对话框的内容"本身。
通过关闭请求事件。
在这里,文档说,关闭事件仅与"外部"相关。关闭事件,例如按ESC或单击对话框标题栏中的X按钮。
此外,我必须注意在继续之前将result
属性重置为null
并防止再次关闭。
通过任何其他对话框事件。 在这里,我还没有找到一个能够在消耗时停止这个过程的元素 - DIALOG_SHOWING不是DIALOG_SHOWN,DIALOG_HIDING和DIALOG_HIDDEN似乎都没有。
我错过了什么?