自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AWT和Swing的可訪問性

開發(fā) 后端
本文介紹AWT和Swing的可訪問性,與 AWT 類似,Swing 的一個(gè)優(yōu)點(diǎn)是,它也是 Java 技術(shù)的一種標(biāo)準(zhǔn)配置。這意味著您不需要自己來安裝它了。

可訪問性

創(chuàng)建一個(gè)殘疾人可以訪問的 GUI 是非常重要的。Swing 為實(shí)現(xiàn)具有可訪問性的 GUI 提供了豐富的基礎(chǔ)設(shè)施和 API。這種支持是單獨(dú)的,但是如果主機(jī)上具有可訪問性支持,那么它們應(yīng)該集成在一起。

與 AWT 一樣,Swing 可以支持 GUI 組件的自動(dòng)銷毀。Swing 還可以支持 AWT 的自底向上和自頂向下的構(gòu)建方法。

與 AWT 不同,Swing 組件不是線程安全的,這意味著您需要關(guān)心在應(yīng)用程序中是哪個(gè)線程在更新 GUI。如果在使用線程時(shí)出現(xiàn)了錯(cuò)誤,就可能會(huì)出現(xiàn)不可預(yù)測(cè)的行為,包括用戶界面故障。有一些工具可以幫助管理線程的問題。

與 AWT 類似,Swing 的一個(gè)優(yōu)點(diǎn)是,它也是 Java 技術(shù)的一種標(biāo)準(zhǔn)配置。這意味著您不需要自己來安裝它了。不幸的是,Swing 已經(jīng)有了很大的變化,因此它很容易變得依賴于最新版本的 Java 語言所提供的特性,這可能會(huì)強(qiáng)制用戶更新自己的 Java 運(yùn)行時(shí)環(huán)境。

與 AWT 的概念相比,SWT 是一個(gè)低級(jí)的 GUI 工具包。JFace 是一組用來簡(jiǎn)化使用 SWT 構(gòu)建 GUI 的增強(qiáng)組件和工具服務(wù)。SWT 的構(gòu)建者從 AWT和Swing 實(shí)現(xiàn)中學(xué)習(xí)了很多經(jīng)驗(yàn),他們?cè)噲D構(gòu)建一個(gè)集二者優(yōu)點(diǎn)于一體而沒有二者的缺點(diǎn)的系統(tǒng)。從很多方面來說,他們已經(jīng)成功了。

SWT 也是基于一個(gè)對(duì)等體實(shí)現(xiàn)的,在這一點(diǎn)上它與 AWT 非常類似。它克服了 AWT 所面臨的 LCD 的問題,方法如下:定義了一組控件,它們可以用來構(gòu)建大部分辦公應(yīng)用程序或開發(fā)者工具,然后可以按照逐個(gè)主機(jī)的原則,為特定主機(jī)所沒有提供的控件創(chuàng)建模擬控件(這與 Swing 類似)。對(duì)于大部分現(xiàn)代主機(jī)來說,幾乎所有的控件都是基于本地對(duì)等體的。這意味著基于 SWT 的 GUI 既具有主機(jī)外觀,又具有主機(jī)的性能。這樣就避免了使用 AWT和Swing 而引起的大部分問題。特定的主機(jī)具有一些低級(jí)功能控件,因此 SWT 提供了擴(kuò)充(通常是模擬的)版本(通常使用 “C” 作為名字中的第一個(gè)字母),從而可以產(chǎn)生更一致的行為。

在對(duì)等體工作方式上,SWT 與 AWT 不同。在 SWT 中,對(duì)等體只是主機(jī)控件上的一些封裝程序而已。在 AWT 中,對(duì)等體可以提供服務(wù)來最小化主機(jī)之間的差異(就是在這里,AWT 碰到了很多行為不一致的問題)。這意味著 SWT 應(yīng)用程序?qū)嶋H上就是一個(gè)主機(jī)應(yīng)用程序,它必然會(huì)全部繼承主機(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 個(gè) GUI 庫也可以支持對(duì)部件的定位實(shí)現(xiàn)絕對(duì)控制。SWT 沒有等效的 BorderLayout 部件,這一點(diǎn)非常令人失望。FormLayout 對(duì)于創(chuàng)建表單基本輸入來說非常好用。我認(rèn)為 SWT 的布局機(jī)制比 AWT/Swing 布局部件集的使用更難學(xué)習(xí)。

與 AWT和Swing 事件系統(tǒng)一樣,SWT 提供了非常豐富的事件集。盡管這些事件并不能與 AWT/Swing 的事件一一對(duì)應(yīng)(例如 AWT和Swing 的按鈕都會(huì)產(chǎn)生 ActionEvent 事件,而 SWT 的按鈕產(chǎn)生的則是 SelectionEvent 事件),但是它們通常都是等價(jià)的。

很多 Swing 組件,例如 JTable,都有自己的模型。對(duì)應(yīng)的 SWT 控件(例如 Table)則沒有;不過它們有自己的條目。條目通常用來限制顯示文本或通常很小的圖像(例如圖標(biāo))。為了提供一種類 Swing 的模型接口,SWT 使用了 JFace ContentProviders。這些組件可以在應(yīng)用程序提供的模型(例如 List 或 Table 使用的 java.util.Array )和用作視圖的控件之間充當(dāng)一個(gè)橋梁。為了將任意模型對(duì)象格式化成條目,SWT 使用了 JFace LabelProviders,它們可以為任何模型對(duì)象生成一個(gè)文本或圖標(biāo)格式。這可以對(duì)復(fù)雜模型對(duì)象的混合顯示進(jìn)行限制。其他類似組件,例如 ColorProviders 和 LabelDecorators,可以增強(qiáng)對(duì)這些條目的顯示。對(duì)于 Tables 的特例來說,SWT 提供了 CellEditor,它可以臨時(shí)將任意 SWT 控件鏈接到一個(gè) Table 單元格上,從而當(dāng)作這個(gè)單元格的編輯器使用。

SWT 不支持 GUI 控件的自動(dòng)銷毀。這意味著我們必須顯式地銷毀所創(chuàng)建的任何控件和資源,例如顏色和字體,而不能利用 API 調(diào)用來實(shí)現(xiàn)這種功能。這種工作從某種程度上來說得到了簡(jiǎn)化,因?yàn)槿萜骺刂屏似渥涌丶淖詣?dòng)銷毀功能。

使用 SWT 只能自頂向下地構(gòu)建 GUI。因此,如果沒有父容器,子控件也就不存在了;通常父容器都不能在以后任意改變。這種方法不如 AWT/Swing 靈活??丶窃趧?chuàng)建時(shí)被添加到父容器中的,在銷毀時(shí)被從父容器中刪除的。而且 SWT 對(duì)于 style 位的使用只會(huì)在構(gòu)建時(shí)進(jìn)行,這限制了有些 GUI 控件的靈活性。有些風(fēng)格只是一些提示性的,它們?cè)谒衅脚_(tái)上的行為可能并不完全相同。

與 Swing 類似,SWT 組件也不是線程安全的,這意味著您必須要關(guān)心在應(yīng)用程序中是哪個(gè)線程對(duì) GUI 進(jìn)行了更新。如果在使用線程時(shí)發(fā)生了錯(cuò)誤,就會(huì)拋出異常。我認(rèn)為這比不確定的 Swing 方法要好。有一些工具可以幫助管理線程的問題。

如果所支持的操作系統(tǒng)提供了可訪問性服務(wù),那么 SWT GUI 通常也就具有很好的可訪問性。當(dāng)默認(rèn)信息不夠時(shí),SWT 為程序員提供了一個(gè)基本的 API 來指定可訪問性信息。

SWT 提供了一個(gè)有限的圖形環(huán)境。到目前為止,它對(duì)于 Java2D 和 Java3D 的支持還不怎么好。Eclipse 使用一個(gè)名為 Draw2D 的組件提供了另外一種單獨(dú)的圖形編輯框架(Graphical Editing Framework,GEF),它可以用來創(chuàng)建一些繪圖應(yīng)用程序,例如 UML 建模工具。不幸的是,GEF 難以單獨(dú)(即在整個(gè) 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)使它的安裝變得非常簡(jiǎn)單,并且 SWT 可以與 Eclipse 分開單獨(dú)運(yùn)行。所需要的 Java 檔案文件(JAR)和動(dòng)態(tài)鏈接庫(DLL)以及 UNIX® 和 Macintosh 上使用的類似庫可以從 Eclipse Web 站點(diǎn)上單獨(dú)下載。JFace 庫需要您下載所有的 Eclipse 文件,并拷貝所需要的 JAR 文件。在下載所需要的文件之后,我們還需要將這些 JAR 文件放到 Java CLASSPATH 中,并將 DLL 文件放到系統(tǒng) PATH 中。

【編輯推薦】

  1. Swing模型過濾器概述
  2. 淺談WebRenderer與Swing應(yīng)用程序
  3. TableModelExample可以簡(jiǎn)化Swing
  4. JTable和TableModel簡(jiǎn)化Swing
  5. 用BeanTableModel簡(jiǎn)化Swing
責(zé)任編輯:佚名 來源: 機(jī)械工業(yè)出版社
相關(guān)推薦

2009-07-14 15:01:02

AWT和Swing

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-17 10:11:55

AWT和Swing

2009-07-17 09:07:20

2009-07-10 17:20:38

Swing構(gòu)件AWT構(gòu)件

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-15 16:39:51

AWT和Swing

2009-07-16 13:37:33

Swing和AWT

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-16 13:50:28

AWT和Swing

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-17 10:01:14

Swing和AWT

2009-07-10 15:41:27

Swing AWT

2024-05-13 08:51:39

2009-07-17 10:25:41

AWT和SwingSWT

2011-02-17 08:49:49

WebHTMLCSS

2023-09-27 16:08:37

2011-04-15 17:33:39

SWINGAWT

2009-07-17 09:55:02

事件監(jiān)聽器SWT和SwingAWT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)