用途:在创建、修改或审查基于 IntelliJ 的 IDE 界面(含插件 UI)时使用,用于检查无障碍性。若工作不涉及 UI 本身,则不应使用。
主要能力:覆盖 Swing、Kotlin UI DSL 及其他 UI 栈的无障碍要求,并提供键盘使用、屏幕阅读器、焦点、标签、动态反馈、对比度、缩放和本地化的审查与验证检查。以 WCAG 2.2 为主要标准,参考 JetBrains IntelliJ 平台无障碍指南。
Swing 与 Kotlin UI DSL:为自定义组件和渲染器提供正确的可访问名称、角色、状态/值及属性变更通知。可访问名称通常从组件文本、工具提示或 JLabel.setLabelFor() 推断,仅在缺失、含糊或错误时覆盖;名称中不要包含角色。仅在隐式元数据缺失或错误时修改 AccessibleContext。优先用 component.getAccessibleContext().accessibleName = ... 赋值;需要复制元数据、合并字符串、避免重复描述、设置可访问父级或规范化多行文本时用 AccessibleContextUtil。不要预先添加无障碍属性或触发事件。accessibleDescription 仅用于补充 UI 中已存在但聚焦时未被朗读的文本。纯文本用 AccessibleRole.LABEL,可编辑文本用 TEXT,按钮按行为选 PUSH_BUTTON、RADIO_BUTTON、TOGGLE_BUTTON 或 HYPERLINK。自定义状态未正确暴露时覆盖可访问状态,并在状态、选择、值、文本变化需播报时触发属性变更事件。屏幕阅读器会自动播报聚焦组件的属性变化;聚焦组件之外的重要变化用 AccessibleAnnouncerUtil.announce(),依赖播报支持时检查 AccessibleAnnouncerUtil.isAnnouncingAvailable(),仅对屏幕阅读器用户改变行为时用 ScreenReader.isActive()。
其他 UI 栈:Compose、JCEF 等非 Swing UI 用各自语义、焦点、键盘和测试机制实现相同目标。
审查流程:仅键盘可操作,焦点顺序可预测且不被困住;仅交互组件可聚焦,聚焦后可用空格或回车激活。对话框用 Tab 和 Shift+Tab 循环,Escape 关闭或按预期返回编辑器。非交互标签和面板默认不可聚焦,除非关键信息否则不可获取,并用 ScreenReader.isActive() 控制。新弹窗、模态对话框和动态内容应获得焦点或有键盘路径到达,不要在用户操作列表或下拉框时意外移动焦点。列表、树、表格支持方向键导航。重要动态反馈(验证结果、搜索结果、后台任务完成)应被播报或可达。颜色不是唯一信号,对比度、焦点可见性和字体/UI 缩放保持可用。用户可见的无障碍文本通过消息包本地化,UI 适应 IDE 缩放级别。
验证:仅用键盘走查 UI;条件允许时用受支持的屏幕阅读器测试(Windows 上 NVDA 或 JAWS,macOS 上 VoiceOver);用 UI Inspector 检查可访问名称、描述、角色和状态,启用“Show Accessibility Issues”调查疑似问题或验证自定义 UI 行为,常规验证通常不需要。在代码审查或最终说明中明确列出已检查的无障碍路径和仍需手动处理的部分。
限制:资料未提供具体安装命令、收费信息或平台支持细节。