SWING和AWT

AWT,抽象窗口工具包,是Java提供的創建圖形用戶界面的工具集,可用於生成現代的、鼠標控制的圖形應用接口,且無需修改,就能夠在各類軟硬件平臺上運行。
而swing是Java語言在編寫圖形用戶界面方面的新技術,Swing採用模型-視圖-控制設計範式,Swing可使Java程序在同一個平臺上運行時可以有不一樣外觀以供用戶選擇。
二者不一樣在於一個是初代工具集,一個是進化版的工具集,用戶不會再知足於初始的功能,而是更加註重於附加價值,明顯從這點上,Swing是比AWT要好不少。
寫法上,Swing的頭文件引用包須要用到Javax,組件調用時也須要在AWT的基礎上加上「J」。
AWT :是經過調用操做系統的native方法實現的,因此在Windows系統上的AWT窗口就是Windows的風格,而在Unix系統上的則是XWindow風格。  AWT 中的圖形函數與  操做系統 所提供的圖形函數之間有着一一對應的關係,咱們把它稱爲peers。 也就是說,當咱們利用  AWT 來構件圖形用戶界面的時候,咱們其實是在利用  操做系統 所提供的圖形庫。因爲不一樣  操做系統 的圖形庫所提供的功能是不同的,在一個平臺上存在的功能在另一個平臺上則可能不存在。爲了實現Java語言所宣稱的"一次編譯,處處運行"的概念,AWT 不得不經過犧牲功能來實現其平臺無關性,也就是說,AWT 所提供的圖形功能是各類通用型操做系統所提供的圖形功能的交集。因爲AWT 是依靠本地方法來實現其功能的,咱們一般把AWT控件稱爲重量級控件。
Swing :是所謂的Lightweight組件,不是經過native方法來實現的,因此Swing的窗口風格更多樣化。可是,Swing裏面也有heaveyweight組件。好比JWindow,Dialog,JFrame
Swing是所謂的Lightweight組件,不是經過native方法來實現的,因此Swing的窗口風格更多樣化。可是,Swing裏面也有heaveyweight組件。好比JWindow,Dialog,JFrame
Swing由純Java寫成,可移植性好,外觀在不一樣平臺上相同。因此Swing部件稱爲輕量級組件( Swing是由純JAVA CODE所寫的,所以SWING解決了JAVA因窗口類而沒法跨平臺的問題,使窗口功能也具備跨平臺與延展性的特性,並且SWING不需佔有太多系統資源,所以稱爲輕量級組件!!!)

AWT和Swing都是java中的包。java

AWT(Abstract Window Toolkit):抽象窗口工具包,早期編寫圖形界面應用程序的包。函數

Swing :爲解決 AWT 存在的問題而新開發的圖形界面包。Swing是對AWT的改良和擴展。    工具

AWT和Swing的實現原理不一樣:
       AWT的圖形函數與操做系統提供的圖形函數有着一一對應的關係。也就是說,當咱們利用 AWT構件圖形用戶界面的時候,其實是在利用操做系統的圖形庫。
       不一樣的操做系統其圖形庫的功能可能不同,在一個平臺上存在的功能在另一個平臺上則可能不存在。爲了實現Java語言所宣稱的"一次編譯,處處運行"的概念,AWT不得不經過犧牲功能來實現平臺無關性。所以,AWT 的圖形功能是各操做系統圖形功能的「交集」。
        由於AWT是依靠本地方法來實現功能的,因此AWT控件稱爲「重量級控件」。 

       而Swing ,不只提供了AWT 的全部功能,還用純粹的Java代碼對AWT的功能進行了大幅度的擴充。
       例如:並非全部的操做系統都提供了對樹形控件的支持, Swing則利用了AWT中所提供的基本做圖方法模擬了一個樹形控件。
       因爲 Swing是用純粹的Java代碼來實現的,所以Swing控件在各平臺通用。
       由於Swing不使用本地方法,故Swing控件稱爲「輕量級控件」。 

       AWT和Swing之間的區別:
       1)AWT 是基於本地方法的C/C++程序,其運行速度比較快;Swing是基於AWT的Java程序,其運行速度比較慢。
       2)AWT的控件在不一樣的平臺可能表現不一樣,而Swing在全部平臺表現一致。操作系統

       在實際應用中,應該使用AWT仍是Swing取決於應用程序所部署的平臺類型。例如:
       1)對於一個嵌入式應用,目標平臺的硬件資源每每很是有限,而應用程序的運行速度又是項目中相當重要的因素。在這種矛盾的狀況下,簡單而高效的AWT固然成了嵌入式Java的第一選擇。
       2)在普通的基於PC或者是工做站的標準Java應用中,硬件資源對應用程序所形成的限制每每不是項目中的關鍵因素。因此在標準版的Java中則提倡使用Swing, 也就是經過犧牲速度來實現應用程序的功能。設計

相關文章
相關標籤/搜索