翻譯|使用教程|編輯:吉煒煒|2025-01-06 11:33:13.607|閱讀 91 次
概述:可訪問性在軟件開發中至關重要,許多舊版 Java 桌面應用程序都存在可訪問性問題。本文介紹了如何使用JxBrowser的Web 技術幫助提高 Java 桌面應用程序的可訪問性。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
JxBrowser是一個跨平臺的 JVM 庫,它允許您將基于 Chromium 的 Browser 控件集成到 Compose、Swing、JavaFX、SWT 應用程序中,并使用 Chromium 的數百種功能。
可訪問性在軟件開發中至關重要。在銀行、醫療保健和教育等領域,可訪問性至關重要,因為可用性會影響到廣泛而多樣的用戶。政府和其他組織也要求軟件能夠方便殘障人士使用。
許多舊版 Java 桌面應用程序都存在可訪問性問題。屏幕閱讀器支持不佳、鍵盤導航受限以及缺乏高對比度模式,導致各類人群無法使用它們。
現代瀏覽器和網絡庫在設計時都考慮到了可訪問性。除了內置的可訪問性功能覆蓋了部分內容之外,瀏覽器擴展還覆蓋了其余內容。
本文介紹了如何使用 JxBrowser的Web 技術幫助提高 Java 桌面應用程序的可訪問性。
Java 應用程序中的可訪問性
Java UI 工具包不會忽視可訪問性問題。Swing 通過該javax.accessibility包提供了不錯的支持。JavaFX Accessibility API 提供了良好的自定義選項以及與特定于平臺的工具的兼容性。SWT 使用本機控件,提供內置的可訪問性功能。
然而,將這些 API 集成到遺留代碼中通常非常復雜且耗費人力。許多 Java 應用是在可訪問性成為優先事項之前構建的。隨著時間的推移,一些可訪問性問題會深深扎根于用戶體驗中,使得修復起來既困難又昂貴。
更新 UI 以滿足現代可訪問性標準可能很棘手。例如,如果您想增加 Swing 中聚焦文本字段的對比度,則需要投入一些精力:
var textField = new JTextField(); var defaultBorder = textField.getBorder(); var focusBorder = new CompoundBorder( createLineBorder(Color.BLUE, 3), new EmptyBorder(2, 2, 2, 2) ); textField.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { textField.setBorder(focusBorder); } @Override public void focusLost(FocusEvent e) { textField.setBorder(defaultBorder); } });
將此乘以應用程序中的每個組件,可訪問性很快就會成為一項艱巨的任務。如今,由于設計過時、預算有限以及破壞現有功能的風險,這項任務變得更加具有挑戰性。
網絡無障礙
可訪問性是網頁設計的關鍵部分。WCAG 概述了 可訪問網站的四項原則:它們必須可感知、可操作、可理解和強大。現代網絡框架可以立即處理這些要求中的許多要求,從而減少了額外編碼的需要。
瀏覽器擴展也發揮著重要作用。它們彌補了可訪問性方面的差距,只需用戶付出很少的努力。常見示例包括:
使用 JxBrowser 實現無障礙
借助 Web 技術的優勢,您可以輕松讓您的 Java 應用易于訪問。嵌入式瀏覽器允許您將 Java 代碼與 Web 界面相結合,以創建混合應用程序。
在本文中,我們將探討 JxBrowser,這是一種將基于 Chromium 的瀏覽器嵌入 Swing、JavaFX、SWT 或 Compose 桌面應用程序的流行解決方案。
以下是將 JxBrowser 添加到 Gradle 項目的方法:
plugins { id("com.teamdev.jxbrowser") version "1.2.1" } jxbrowser { version = "8.2.1" } dependencies { // Add a dependency to JxBrowser integration with Swing. // Also provided: jxbrowser.swt, jxbrowser.javafx, jxbrowser.compose. implementation(jxbrowser.swing) // Add a dependency to Chromium binaries for the current platform. implementation(jxbrowser.currentPlatform) }
在 JxBrowser 中,您可以從 CRX 文件或 Chrome 網上應用店安裝 Chrome 擴展程序。
下面演示了如何使用 CRX 文件在一行代碼中安裝高對比度擴展:
var extension = profile.extensions().install(Paths.get("High Contrast.crx"));
在許多情況下,安裝擴展程序就足以在網頁上看到結果。但是,某些擴展程序通過彈出窗口提供可配置的功能。這是您在單擊 Chrome 工具欄中的擴展程序圖標時看到的對話框。JxBrowser 允許您從代碼中單擊擴展程序:
extension.action(browser).ifPresent(ExtensionAction::click);
隨后,擴展彈出窗口將在新窗口中打開:
高對比度擴展彈出窗口
如果我們不想在應用啟動時顯示此彈出窗口,該怎么辦?例如,我們可能希望在安裝后自動打開高對比度模式。
為了實現這一點,我們可以注冊OpenExtensionActionPopupCallback以替換默認行為。在此回調中,我們可以訪問彈出窗口及其 HTML 文檔。從那里,我們只需使用 JavaScript 單擊右側單選按鈕來選擇所需的模式即可。
代碼如下:
var javaScript = """ const selector = 'span[i18n-content="highcontrast_increased_contrast"]'; document.querySelector(selector) ?.closest('label') ?.querySelector('input[type="radio"]') ?.click(); """; browser.set(OpenExtensionActionPopupCallback.class, (params, tell) -> { // Get the extension action popup. var popupBrowser = params.popupBrowser(); // Wait until the document is fully loaded. popupBrowser.navigation().on(FrameDocumentLoadFinished.class, event -> { var frame = event.frame(); // Click on the required button via JavaScript. frame.executeJavaScript(javaScript); }); tell.proceed(); });
當應用程序啟動時,高對比度模式將自動啟用。
常規 Swing 應用程序與帶有 JxBrowser 的應用程序之間的高對比度
結論
在本文中,我們討論了如何通過遷移到 Web 以最少的努力實現良好的可訪問性。借助 JxBrowser,您可以使用 Chrome 擴展程序快速輕松地實現此目的。
如果您有產品試用下載、價格咨詢、優惠獲取,或其他任何問題,請聯系。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網