我目前正在使用JavaFX创建对话框。对话框本身很好用,但现在我正在尝试添加输入验证,在用户忘记填写文本字段时警告用户。我的问题是:是否可以在结果转换器中防止对话框关闭?像这样:
ButtonType buttonTypeOk = new ButtonType("Okay", ButtonData.OK_DONE);
dialog.getDialogPane().getButtonTypes().add(buttonTypeOk);
dialog.setResultConverter((ButtonType param) -> {
if (valid()) {
return ...
} else {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setHeaderText("Pleas fill all fields!");
alert.showAndWait();
//prevent dialog from closing
}
});
我注意到如果在结果转换器中抛出错误,则对话框不会关闭,但这似乎不是解决这个问题的好方法。
如果无法通过这种方式解决问题,我可以像这篇文章中所描述的那样禁用按钮。但我更喜欢保持按钮启用并显示一条消息。
提前感谢!