?? s01.htm
字號:
┌───┼─────────┼─────────┬┤<br> │AWT│窗體、窗口、對話框│ ││<br> │ ├─────────┘ ││<br> │ │組件、容器、圖形、顏色、字體、工具包、││<br> │ │布局管理器等 ││<br> │ └───────────────────┘│<br> └────────────────────────┘ <br> Swing利用AWT的下層構件,包括圖形、顏色、字體、工具包和布局管理器;然而,Swing沒有使用AWT的組件。唯一與Swing有關的AWT組件是Frame、Window和Dialog類,它們分別被Swing的重量組件:JFrame、JWindow和JDialog所擴展。Swing使用AWT最好的部分來建立一個新的輕量組件集,并且丟棄了AWT中有問題的部分——重量組件。<br> Swing是用來替代AWT的重量組件,而不是用來替代AWT本身。要了解Swing,就必須具有AWT的基本知識。<br> Swing除利用圖形、字體、布局管理器等AWT功能外,所有的Swing輕量組件基本上都是從AWT的Container類繼承來的,而AWT的Container類又擴展了AWT的Component類。換句話說,Swing不僅利用了AWT提供的下層構件,而且所有的Swing組件實際上都是AWT容器。注意:AWT Container類本身是輕量的(即它沒有對等組件(注:實際上,java.awt.Container有一個什么都不做的,待替換的對等組件))且在其容器的窗口中繪制。 </p> <p><b>對等組件與插入式界面樣式的比較</b></p> <p> Swing組件和AWT組件都把與顯示組件有關的許多工作和處理組件事件的工作交給其他對象來執行。對AWT組件而言,代表是一個本地對等組件,而對Swing組件而言,代表是ComponentUI類的一個擴展。雖然Swing組件和AWT組件都使用代表機制,但把工作交給其他對象處理所產生的結果在兩個工具包中有明顯的不同。<br> 由于AWT組件把工作交給對等組件來完成,所以它們的行動很難擴展。例如,不可能把一幅圖像添加到AWT的按鈕上,這是因為按鈕的繪制是由本地對等組件來完成的,而該對等組件可能是用C++編寫的,它的行為不能擴展。同樣,因為文本域的對等組件負責增亮文本,所以,文本域增亮文本的方式也不能修改。要點是,任何由本地對等組件實現的行為是不能修改或擴展的。 <br> 另一方面,Swing組件的代表(它的ComponentUI)是Swing工具包中的一個Java類,它以擴展以修改組件的行為。Swing的插入式界面樣式設計使用了改進的“模型-視圖-控制器”體系結構,在這個體系結構中,組件的UI代表負責顯示組件和處理輸入事件的視圖-控制器。當Swing組件配備了一個修改過的組件UI時,組件的可視外觀或事件處理都是可以修改的。 </p> <p><b> <a name="1.7"></a>1.7 開始學習</b></p> <p> Swing可與JDK1.1或1.2版一起使用。JDK1.2版包含了Swing,而1.1版本卻沒有。要在1.1版中使用Swing,必須從JFC web站點下載Swing,其地址是:<a href="http://java.sun.com/products/jfc/index.hmtl" target="_blank">http://java.sun.com/products/jfc/index.hmtl</a> 。</p> <p><b>在Internet瀏覽器中使用Swing</b></p> <p> 在Netscape Navigator和Internet Explorer中都能用Swing小應用程序,但是,必須使用合適的瀏覽器版本,并確保包含了對JDK 1.1的支持。<br> 1.Netscape Navigator<br> 必須有Netscape Navigator 4.04或更新的版本,并且已安裝了JDK1.1的補丁程序,要下載Netscape Navigator和JDK 1.1補丁程序請訪問地址:<a href="http://developer.netscape.com/software/jdk/download.html" target="_blank">http://developer.netscape.com/software/jdk/download.html</a><br> 圖1-5示出了一個在Netscape Navigator中運行的Swing小應用程序。<br> 在下載了一個合適的Netscape Navigator版本和JDK1.1補丁程序之后,還必須確保Netscape可找到Swing的jar文件。使Netscape能找到Swing有兩種方法:第一種方法是把Swing的jar文件拷貝到一個確定的Netscape目錄中;第二種方法是修改系統的CLASSPATH變量。本節介紹第一種方法,由于 第二種方法對Internet Explorer和Netscape Navigator是相同的,所以我們將在“Internet Explorer”一節中介紹第二種方法。<br> 可把Swing的jar文件拷貝到Netscape的java\Classes目錄中。例如,如果氫Netscape安裝在C盤中,Swing安裝在c:\swing目錄下,則就把所有的Swing jar文件從c:\swing拷貝到c:\program files\Netscape\Communicator\Program\Java\Class下。只要有Netscape Navigator的最新版本,安裝了JDK 1.1補丁程序,并且Netscape可找到Swing的jar文件,就具備了在Netscape Navigator中運行Swing小應用程序的條件。<br> 2、Internet Explorer<br> Internet Explorer的4.0版或得高版本支持JDK1.1。只要有合適的Internet Explorer版本并設置了系統的CLASSPATH變量,以便Internet Explorer能找到Swing的jar文件,就能在Internet Explorer中運行Swing小應用程序。下面介紹如何設置系統的CLASSPAHT變量。<br> 對Windows NT系統,進入Windows的“控制面板”,雙擊“系統”圖標,在“系統屬性”窗口中單“Environment(環境)”選項卡,把CLASSPATH變量添加到“User Variables for Administrator”列表框中,如圖1-6所示。<br> CLASSPATH變量應該包括JDK的class.zip文件和swingall.jar文件。例如,圖1-6顯示了JDK和Swing均安裝在D:\下時設置CLASSPATH變量的情況。添加(或修改)完CLASSPATH變量后,單擊OK按鈕關閉“System Properties”窗口,此時,需要重新啟動系統,重啟后,就可以在Internet Explorer中運行Swing小應用程序了。<br> 對Windows 95系統,必須手工編輯c:\下的autoexec.bat文件,只需在autoexec.bat文件中添加一項,如下所示:<br> SET CLASSPATH=C:\jdk\lib\classes.zip;c:\swing\swingall.jar<br> 同樣,在autoexec.bat文件中添加(或修改)了CLASSPATH變量后,必須重新啟動系統。<br> 圖1-7示出了在Internet Explorer中運行的Swing小應用程序。<br> 3、Java插件<br> 當在Netscape Navigator或Internet Explorer中運行Swing小應用程序時,毫無疑問地還會發現許多錯誤。這些問題可能與Swing本身無關,可能是開發Internet上使用的Java小應用程序的主要缺點。<br> 小應用程序開發人員面臨的最困難的任務之一是使小應用程序在不同的瀏覽器中的表現是一致的。此外,由于歷史的原因,瀏覽器制造商已減慢了更新瀏覽器(與最新版本JDK同步的)的速度。幸運的是,針對這個Sun公司已推出了一個漂亮的解決方案,即它的Java插件(以前稱作Activator)。<br> 通過把一個插件插入Netscape的Netscape Navigator中或在Internet Explorer中運行一個ActiveX控件來使用Java插件。插件或ActiveX控件有效地把Sun的JDK最新版本安裝到瀏覽器中。使用Java插件保證了小應用程序在不同的瀏覽器中的一致性。<br> Java插件唯一的缺點是要求對HTML文件做一些修改。當然Sun也提供了一個實用工具來進行這種修改。要更多地了解免費獲得Java插件的情況,請訪問下面的Web站點:<br> <a href="http://java.sun.com/features/1998/04/plugin.html" target="_blank">http://java.sun.com/features/1998/04/plugin.html</a> </p> <p><b> <a name="1.8"></a>1.8 Swing資源</b></p> <p> 除本書外,還能找到許多學習Swing的資源。當需要解答對本書中沒有介紹到的問題時,就需要去尋找其他資源。<br> 開始學習Swing的最好方法是學習Swing本身隨帶的例子代碼。這些例子提供了許多小而完善的小應用程序和應用程序,它們對Swing很多方面的特性做了練習。Swing的這些例子可在Swing主目錄的examples目錄下找到。例如,如果Swing安裝在c:\swing目錄下,則可以在c:\swing\examples目錄下找Swing的例子。<br> Internet上也有許多Swing資源,其中包括郵件列表和新聞組。下面列出的新聞組是解決Swing問題的好地方:<br> comp.lang.java.programmer<br> comp.lang.java.gui<br> 此外,還有許多由件列表供喜愛Swing的初高級用戶使用,要了解郵件列表的有關信息,請訪問下面的Web站點:<br> <a href="http://www.eos.dk/" target="_blank">http://www.eos.dk/</a><br> Swing Connection是由Sun維護的Swing的正式站點。可在下面的Web站點中找到:<br> <a href="http://java.sun.com/products/jfc/tsc/" target="_blank">http://java.sun.com/products/jfc/tsc/</a> </p> <p><b> <a name="1.9"></a>1.9 本章回顧</b></p> <p> Java于1995年出現,并迅速發展成為程序開發人員所喜愛的語言。Java的重新定位于Internet和重命名為Java以前五年多時間里,它是以Oak語言的身份出現的(Oak是一種研究語言,Sun公司打算使它成為C++的一種更易于使用的和功能更強大的變體)。<br> 雖然Java語言開發許多年并且在Sun公司內部使用,但是該語言沒有用戶界面工具包。當Java的優勢開始顯現時,很明顯,它必須有用戶界面工具包并應在最短的時間內開發出來。開發用戶界面最快的方法是在本地組件(又叫做對等組件)上做大部分工作,并在本地組件的頂層放一層Java類。這樣,在六個星期不到的時間內開發小組實現了AWT。<br> 對等組件體系結構沒有擴展性,并導致了不同平臺上不一致的問題產生。此外,AWT沒有可靠的面向對象基礎;例如,最初的事件模型需要一個switch語句,以便根據事件類型來決定激活哪段代碼。這種switch語句是對面向對象的破壞;這種根據對象類型進行切換的swich語句應該通過多態性機制來處理(注:swigch語句有時在面向對象設計中是有效的,但AWT的事件模型不是這種情況。) <br> Java開發人員、Sun公司或Sun公司的競爭者逐漸注意到原來的AWT的缺點。不久,出現了許多用來替代AWT的工具包。同時,Sun發布了AWT的1.1版,它做了許多改進,包括一個新事件模型和對輕量組件(非對等組件)的支持。然而,AWT1.1版還不夠好用。<br> JavaSoft認識到Java領域在用戶界面工具包的使用上將會出現分裂,于是他們與Netscape合作開發Swing組件集。Netscape和Sun公司的工程師用了將近一年半的時間來開發Swing,Swing在AWT上進行了巨大的改進。<br> 雖然有些Swing組件替代了AWT的重量組件,但Swing不是AWT的替代品,而是AWT的擴展,Swing使用了大量的AWT下層構件,包括對圖形、字體和布局管理器的支持。要更深入了解Swing,就必須對AWT的下層構件有基本的了解。<br> 與所有其他軟件一樣,Swing還不完美。到現在為止,Swing中仍有一些程序錯誤。在某些地方還表現出了一些設計缺陷,但它是一個可靠的用戶界面工具包,比原來的AWT有了很大改進。 <b> </b> </p> <p> <b></b> [<a href="index.html" target="_self">目錄</a>][上一頁][<a href="s02.htm" target="_self">下一頁</a>](颯龍收藏/2002.5.18)</p> </td> </tr> </tbody> </table> </td> </tr></tbody></table><script language="javascript">bottomprint()</script></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -