新聞中心
可訪問性

創(chuàng)新互聯(lián)是一家專業(yè)提供七星企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為七星眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
創(chuàng)建一個殘疾人可以訪問的 GUI 是非常重要的。Swing 為實(shí)現(xiàn)具有可訪問性的 GUI 提供了豐富的基礎(chǔ)設(shè)施和 API。這種支持是單獨(dú)的,但是如果主機(jī)上具有可訪問性支持,那么它們應(yīng)該集成在一起。
與 AWT 一樣,Swing 可以支持 GUI 組件的自動銷毀。Swing 還可以支持 AWT 的自底向上和自頂向下的構(gòu)建方法。
與 AWT 不同,Swing 組件不是線程安全的,這意味著您需要關(guān)心在應(yīng)用程序中是哪個線程在更新 GUI。如果在使用線程時出現(xiàn)了錯誤,就可能會出現(xiàn)不可預(yù)測的行為,包括用戶界面故障。有一些工具可以幫助管理線程的問題。
與 AWT 類似,Swing 的一個優(yōu)點(diǎn)是,它也是 Java 技術(shù)的一種標(biāo)準(zhǔn)配置。這意味著您不需要自己來安裝它了。不幸的是,Swing 已經(jīng)有了很大的變化,因此它很容易變得依賴于最新版本的 Java 語言所提供的特性,這可能會強(qiáng)制用戶更新自己的 Java 運(yùn)行時環(huán)境。
與 AWT 的概念相比,SWT 是一個低級的 GUI 工具包。JFace 是一組用來簡化使用 SWT 構(gòu)建 GUI 的增強(qiáng)組件和工具服務(wù)。SWT 的構(gòu)建者從 AWT和Swing 實(shí)現(xiàn)中學(xué)習(xí)了很多經(jīng)驗(yàn),他們試圖構(gòu)建一個集二者優(yōu)點(diǎn)于一體而沒有二者的缺點(diǎn)的系統(tǒng)。從很多方面來說,他們已經(jīng)成功了。
SWT 也是基于一個對等體實(shí)現(xiàn)的,在這一點(diǎn)上它與 AWT 非常類似。它克服了 AWT 所面臨的 LCD 的問題,方法如下:定義了一組控件,它們可以用來構(gòu)建大部分辦公應(yīng)用程序或開發(fā)者工具,然后可以按照逐個主機(jī)的原則,為特定主機(jī)所沒有提供的控件創(chuàng)建模擬控件(這與 Swing 類似)。對于大部分現(xiàn)代主機(jī)來說,幾乎所有的控件都是基于本地對等體的。這意味著基于 SWT 的 GUI 既具有主機(jī)外觀,又具有主機(jī)的性能。這樣就避免了使用 AWT和Swing 而引起的大部分問題。特定的主機(jī)具有一些低級功能控件,因此 SWT 提供了擴(kuò)充(通常是模擬的)版本(通常使用 “C” 作為名字中的第一個字母),從而可以產(chǎn)生更一致的行為。
在對等體工作方式上,SWT 與 AWT 不同。在 SWT 中,對等體只是主機(jī)控件上的一些封裝程序而已。在 AWT 中,對等體可以提供服務(wù)來最小化主機(jī)之間的差異(就是在這里,AWT 碰到了很多行為不一致的問題)。這意味著 SWT 應(yīng)用程序?qū)嶋H上就是一個主機(jī)應(yīng)用程序,它必然會全部繼承主機(jī)的優(yōu)點(diǎn)和缺點(diǎn)。這還意味著 SWT 不能完全實(shí)現(xiàn) WORE 的目標(biāo);它更像是一種 WOTE 解決方案。這就是說,SWT 盡管不如 Swing 那么優(yōu)秀,但是它在創(chuàng)建可移植解決方案方面是很杰出的。
正如您可以看到的一樣,這些組件集比 AWT 提供的組件集更為廣泛,與 Swing 組件集相比也毫不遜色。
與 AWT和Swing 布局管理器類似,SWT 也提供了非常豐富的布局部件集。布局系統(tǒng)與嵌套容器一起使用,可以生成所需要的任何布局算法。所有這 3 個 GUI 庫也可以支持對部件的定位實(shí)現(xiàn)絕對控制。SWT 沒有等效的 BorderLayout 部件,這一點(diǎn)非常令人失望。FormLayout 對于創(chuàng)建表單基本輸入來說非常好用。我認(rèn)為 SWT 的布局機(jī)制比 AWT/Swing 布局部件集的使用更難學(xué)習(xí)。
與 AWT和Swing 事件系統(tǒng)一樣,SWT 提供了非常豐富的事件集。盡管這些事件并不能與 AWT/Swing 的事件一一對應(yīng)(例如 AWT和Swing 的按鈕都會產(chǎn)生 ActionEvent 事件,而 SWT 的按鈕產(chǎn)生的則是 SelectionEvent 事件),但是它們通常都是等價的。
很多 Swing 組件,例如 JTable,都有自己的模型。對應(yīng)的 SWT 控件(例如 Table)則沒有;不過它們有自己的條目。條目通常用來限制顯示文本或通常很小的圖像(例如圖標(biāo))。為了提供一種類 Swing 的模型接口,SWT 使用了 JFace ContentProviders。這些組件可以在應(yīng)用程序提供的模型(例如 List 或 Table 使用的 java.util.Array )和用作視圖的控件之間充當(dāng)一個橋梁。為了將任意模型對象格式化成條目,SWT 使用了 JFace LabelProviders,它們可以為任何模型對象生成一個文本或圖標(biāo)格式。這可以對復(fù)雜模型對象的混合顯示進(jìn)行限制。其他類似組件,例如 ColorProviders 和 LabelDecorators,可以增強(qiáng)對這些條目的顯示。對于 Tables 的特例來說,SWT 提供了 CellEditor,它可以臨時將任意 SWT 控件鏈接到一個 Table 單元格上,從而當(dāng)作這個單元格的編輯器使用。
SWT 不支持 GUI 控件的自動銷毀。這意味著我們必須顯式地銷毀所創(chuàng)建的任何控件和資源,例如顏色和字體,而不能利用 API 調(diào)用來實(shí)現(xiàn)這種功能。這種工作從某種程度上來說得到了簡化,因?yàn)槿萜骺刂屏似渥涌丶淖詣愉N毀功能。
使用 SWT 只能自頂向下地構(gòu)建 GUI。因此,如果沒有父容器,子控件也就不存在了;通常父容器都不能在以后任意改變。這種方法不如 AWT/Swing 靈活。控件是在創(chuàng)建時被添加到父容器中的,在銷毀時被從父容器中刪除的。而且 SWT 對于 style 位的使用只會在構(gòu)建時進(jìn)行,這限制了有些 GUI 控件的靈活性。有些風(fēng)格只是一些提示性的,它們在所有平臺上的行為可能并不完全相同。
與 Swing 類似,SWT 組件也不是線程安全的,這意味著您必須要關(guān)心在應(yīng)用程序中是哪個線程對 GUI 進(jìn)行了更新。如果在使用線程時發(fā)生了錯誤,就會拋出異常。我認(rèn)為這比不確定的 Swing 方法要好。有一些工具可以幫助管理線程的問題。
如果所支持的操作系統(tǒng)提供了可訪問性服務(wù),那么 SWT GUI 通常也就具有很好的可訪問性。當(dāng)默認(rèn)信息不夠時,SWT 為程序員提供了一個基本的 API 來指定可訪問性信息。
SWT 提供了一個有限的圖形環(huán)境。到目前為止,它對于 Java2D 和 Java3D 的支持還不怎么好。Eclipse 使用一個名為 Draw2D 的組件提供了另外一種單獨(dú)的圖形編輯框架(Graphical Editing Framework,GEF),它可以用來創(chuàng)建一些繪圖應(yīng)用程序,例如 UML 建模工具。不幸的是,GEF 難以單獨(dú)(即在整個 Eclipse 環(huán)境之外)使用。
與 AWT和Swing 不同,SWT 和 JFace 并不是 Java 技術(shù)的標(biāo)準(zhǔn)配置。它們必須單獨(dú)進(jìn)行安裝,這可以當(dāng)作是 Eclipse 安裝的一部分,也可以當(dāng)作是單獨(dú)的庫進(jìn)行安裝。Eclipse 小組已經(jīng)使它的安裝變得非常簡單,并且 SWT 可以與 Eclipse 分開單獨(dú)運(yùn)行。所需要的 Java 檔案文件(JAR)和動態(tài)鏈接庫(DLL)以及 UNIX? 和 Macintosh 上使用的類似庫可以從 Eclipse Web 站點(diǎn)上單獨(dú)下載。JFace 庫需要您下載所有的 Eclipse 文件,并拷貝所需要的 JAR 文件。在下載所需要的文件之后,我們還需要將這些 JAR 文件放到 Java CLASSPATH 中,并將 DLL 文件放到系統(tǒng) PATH 中。
本文名稱:AWT和Swing的可訪問性
鏈接URL:http://fisionsoft.com.cn/article/djpphhh.html


咨詢
建站咨詢
