完整指南教導如何讓 Swing 應用符合美國 508 條款無障礙標準,涵蓋組件描述性命名、鍵盤導航、邏輯關係建立、複雜元件渲染器可及性、自動化驗證報告產生等實務技巧。
Accessible 介面,提供 AccessibleContext。setAccessibleName(String):螢幕閱讀器讀出的名稱。setAccessibleDescription(String):詳細說明。JLabel 文字 → Name,ToolTip → Description,但建議**顯式設定**。setAccessibleValues(ResourceBundle, Accessible, AccessibleValues) // 批次設定名稱/描述/助記符/ToolTip/邊框標題
setMemberRelationship(Accessible group, Collection members) // 建立 MEMBER_OF 關係 (如 RadioButton 群組)
setLabelRelationship(Accessible label, Accessible target) // 建立 LABEL_FOR / LABELLED_BY (如 JLabel 標記 JTextField)
name, shortDescription, longDescription, toolTip, text, borderText, mnemonic
setMnemonic):Alt+字母 直接跳轉,全域唯一,優先給選單項、重要按鈕、各群組首項。setNextFocusableComponent / FocusTraversalPolicy 自訂。WindowListener.windowActivated → requestFocusInWindow(),或設定 RootPane.setDefaultButton。JList/JTable/JTree/JComboBox 使用 Renderer 繪製,Renderer 元件同樣需設定可及性屬性。ListCellRenderer 時,在 getListCellRendererComponent 回傳前呼叫 setAccessibleValues。AccessibilityUtils.output(Component, PrintWriter, Outputter) 支援三種輸出器:
報告包含元件階層、屬性值、AccessibleContext 完整欄位、關係集合,缺失項標示 Warning/Error。
ResourceBundle 支援多國語系無障礙文案。