Confirm
ConfirmDialog 是一个模态对话框,旨在允许用户选择最多 3 个选项中的一个。该对话框会阻止应用执行,直到用户与其交互或因超时而关闭。
用法
ConfirmDialog 提供了一种方式来询问用户确认或在多个选项之间进行选择,例如 是/否 或 确定/取消,确保他们承认并确认他们的操作。
显示代码
- Java
类型
选项类型
ConfirmDialog 支持以下选项类型,这些类型决定了对话框中显示的按钮:
OK: 显示一个OK按钮。OK_CANCEL: 显示OK和取消按钮。ABORT_RETRY_IGNORE: 显示中止、重试和忽略按钮。YES_NO_CANCEL: 显示是、否和取消按钮。YES_NO: 显示是和否按钮。RETRY_CANCEL: 显示重试和取消按钮。CUSTOM: 显示自定义按钮,如指定的那样。
消息类型
ConfirmDialog 支持以下消息类型。当你配置一种类型时,对话框会在消息旁边显示一个图标,并根据 webforJ 设计系统的规则更新对话框的主题。
PLAIN: 显示没有图标的消息,使用默认主题。ERROR: 在消息旁边显示错误图标,应用错误主题。QUESTION: 在消息旁边显示问号图标,使用主主题。WARNING: 在消息旁边显示警告图标,应用警告主题。INFO: 在消息旁边显示信息图标,使用信息主题。
在以下示例中,代码配置一个类型为 CUSTOM 的确认对话框,带有自定义的标题和消息。
显示代码
- Java
结果
ConfirmDialog 返回一个结果,基于用户与对话框的交互。该结果指示用户点击了哪个按钮,或者是否由于超时而关闭了对话框。
结果将从 show() 方法或等效的 OptionDialog 方法返回,如下所示。
ConfirmDialog.Result 枚举包括以下可能的结果:
OK: 用户点击了OK按钮。CANCEL: 用户点击了CANCEL按钮。YES: 用户点击了YES按钮。NO: 用户点击了NO按钮。ABORT: 用户点击了ABORT按钮。RETRY: 用户点击了RETRY按钮。IGNORE: 用户点击了IGNORE按钮。FIRST_CUSTOM_BUTTON: 用户点击了第一个自定义按钮SECOND_CUSTOM_BUTTON: 用户点击了第二个自定义按钮THIRD_CUSTOM_BUTTON: 用户点击了第三个自定义按钮TIMEOUT: 对话框超时。UNKNOWN: 未知结果,通常用作默认或错误状态。
if (result == ConfirmDialog.Result.FIRST_CUSTOM_BUTTON) {
OptionDialog.showMessageDialog("更改已丢弃", "已丢弃", "知道了");
} else {
OptionDialog.showMessageDialog(
"更改已保存", "已保存", "知道了", MessageDialog.MessageType.INFO);
}
默认按钮
ConfirmDialog 允许你指定一个在对话框显示时预先选择的默认按钮。这增强了用户体验,提供了一个用户可以通过按下 Enter 键快速确认的建议操作。
ConfirmDialog dialog = new ConfirmDialog(
"你确定吗?", "确认", ConfirmDialog.OptionType.YES_NO);
dialog.setDefaultButton(Button.SECOND); // 第二个按钮
dialog.show();
按钮文本
你可以使用 setButtonText(ConfirmDialog.Button button, String text) 方法配置按钮的文本。
ConfirmDialog dialog = new ConfirmDialog(
"你确定吗?", "确认", ConfirmDialog.OptionType.CUSTOM);
dialog.setButtonText(ConfirmDialog.Button.FIRST, "绝对是");
dialog.setButtonText(ConfirmDialog.Button.SECOND, "不");
dialog.show();
HTML 处理
默认情况下,确认对话框处 理和渲染 HTML 内容。你可以通过配置其显示原始文本来关闭此功能。
ConfirmDialog dialog = new ConfirmDialog(
"<b>你确定吗?</b>", "确认",
ConfirmDialog.OptionType.YES_NO, ConfirmDialog.MessageType.QUESTION);
dialog.setRawText(true);
dialog.show();
超时
ConfirmDialog 允许你设置一个超时时间,超时后对话框会 自动关闭。此功能对于不需要用户立即交互的非关键确认或操作非常有用。
你可以使用 setTimeout(int timeout) 方法配置对话框的超时。超时时间以秒为单位。如果指定的时间经过而没有任何用户操作,对话框将自动关闭。
ConfirmDialog dialog = new ConfirmDialog(
"你确定吗?", "确认", ConfirmDialog.OptionType.YES_NO);
dialog.setDefaultButton(Button.SECOND);
dialog.setTimeout(3);
ConfirmDialog.Result result = dialog.show();
switch (result) {
case TIMEOUT:
OptionDialog.showMessageDialog(
"你花了太长时间决定", "超时", "知道了",
MessageDialog.MessageType.WARNING);
break;
case YES:
OptionDialog.showMessageDialog(
"你点击了 Yes", "是", "知道了",
MessageDialog.MessageType.INFO);
break;
default:
OptionDialog.showMessageDialog(
"你点击了 No", "否", "知道了",
MessageDialog.MessageType.INFO);
break;
}
最佳实践
- 清晰简洁的提示: 确保提示消息清晰解释用户被要求确认的操作。避免模糊。
- 适当的选项类型: 选择与操作上下文相匹配的选项类型。对于简单的是/否决策,使用直接的选项。对于更复杂的场景,提供额外的按钮,如“取消”,以允许用户在不做出选择的情况下退回。
- 逻辑默认按钮: 设置一个符合最可能或推荐用户操作的默认按钮,以简化决策过程。
- 一致的主题: 使对话框和按钮的主题与应用程序的设计保持一致,以提供一致的用户体验。
- 谨慎使用超时: 为非关键确认设置超 时,确保用户有足够的时间阅读和理解提示。
- 减少过度使用: 使用确认对话框要适度,以避免用户沮丧。应将其保留用于需要用户明确确认的关键操作。