Confirm
ConfirmDialog 是一个模态对话框,旨在允许用户从最多 3 个选项中选择一个。该对话框会阻止应用程序执行,直到用户与之交互或因超时而关闭。
Usages
ConfirmDialog 提供了一种方法来询问用户确认或在多个选项之间选择,例如 Yes/No 或 OK/Cancel,确保他们承认并确认自己的操作。
显示代码
- ConfirmDialogConstructorView.java
Types
Option type
ConfirmDialog 支持以下选项类型,这些类型决定对话框中显示的按钮:
OK:显示OK按钮。OK_CANCEL:显示OK和Cancel按钮。ABORT_RETRY_IGNORE:显示Abort、Retry和Ignore按钮。YES_NO_CANCEL:显示Yes、No和Cancel按钮。YES_NO:显示Yes和No按钮。RETRY_CANCEL:显示Retry和Cancel按钮。CUSTOM:显示自定义按钮,如所指定。
Message type
ConfirmDialog 支持以下消息类型。当您配置类型时,对话框在消息旁边显示一个图标,并且对话框的主题根据 webforJ 设计系统规则进行更新。
PLAIN:不显示图标,使用默认主题。ERROR:在消息旁边显示错误图标,应用错误主题。QUESTION:在消息旁边显示问号图标,使用主主题。WARNING:在消息旁边显示警告图标,应用警告主题。INFO:在消息旁边显示信息图标,使用信息主题。
在下面的示例中,代码配置了一个类型为 CUSTOM 的确认对话框,具有自定义标题和消息。
显示代码
- ConfirmDialogOptionsView.java
Result
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);
}
Default button
ConfirmDialog 允许您指定一个默认按钮,该按钮在对话框显示时被预选。这样可以通过按 Enter 键快速确认建议的操作,从而提高用户体验。
ConfirmDialog dialog = new ConfirmDialog(
"你确定吗?", "确认", ConfirmDialog.OptionType.YES_NO);
dialog.setDefaultButton(Button.SECOND); // 第二个按钮
dialog.show();
Buttons text
您可以使用 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 processing
默认情况下,确认对话框会处理和渲染 HTML 内容。您可以通过配置它以显示原始文本而关闭此功能。
ConfirmDialog dialog = new ConfirmDialog(
"<b>你确定吗?</b>", "确认",
ConfirmDialog.OptionType.YES_NO, ConfirmDialog.MessageType.QUESTION);
dialog.setRawText(true);
dialog.show();
Timeout
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(
"你点击了是", "是", "明白了",
MessageDialog.MessageType.INFO);
break;
default:
OptionDialog.showMessageDialog(
"你点击了否", "否", "明白了",
MessageDialog.MessageType.INFO);
break;
}
Best practices
- 清晰简洁的提示:确保提示消息清晰地解释用户被要求确认的操作。避免模糊性。
- 适当的选项类型:选择与操作上下文相匹配的选项类型。对于简单的是/否决策,使用直接选项。对于更复杂的情况,提供额外的按钮,如“取消”,以允许用户在不做选择的情况下退回。
- 逻辑默认按钮:设置 一个与最可能或推荐的用户操作对齐的默认按钮,以简化决策过程。
- 一致的主题:确保对话框和按钮主题与应用程序的设计一致,以提供一致的用户体验。
- 合理使用超时:为非关键确认设置超时,确保用户有足够的时间阅读和理解提示。
- 减少过度使用:谨慎使用确认对话框,以避免用户沮丧。仅保留关键操作需要明确用户确认时使用。