1. 程式人生 > >AWT和Swing的區別

AWT和Swing的區別

AWT 是Abstract Window ToolKit (抽象視窗工具包)的縮寫,這個工具包提供了一套與本地圖形介面進行互動的介面。AWT 中的圖形函式與作業系統所提供的圖形函式之間有著一一對應的關係,我們把它稱為peers。 也就是說,當我們利用 AWT 來構件圖形使用者介面的時候,我們實際上是在利用作業系統所提供的圖形庫。由於不同作業系統的圖形庫所提供的功能是不一樣的,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現Java語言所宣稱的"一次編譯,到處執行"的概念,AWT 不得不通過犧牲功能來實現其平臺無關性,也就是說,AWT 所提供的圖形功能是各種通用型作業系統所提供的圖形功能的交集。由於AWT 是依靠本地方法來實現其功能的,我們通常把AWT控制元件稱為重量級控制元件。

Swing 是在AWT的基礎上構建的一套新的

圖形介面系統,它提供了AWT 所能夠提供的所有功能,並且用純粹的Java程式碼對AWT 的功能進行了大幅度的擴充。例如說並不是所有的作業系統都提供了對樹形控制元件的支援, Swing 利用了AWT 中所提供的基本作圖方法對樹形控制元件進行模擬。由於 Swing 控制元件是用100%的Java程式碼來實現的,因此在一個平臺上設計的樹形控制元件可以在其他平臺上使用。由於在Swing 中沒有使用本地方法來實現圖形功能,我們通常把Swing控制元件稱為輕量級控制元件。

AWT和Swing之間的基本區別:AWT 是基於本地方法的C/C++程式,其執行速度比較快;Swing是基於AWT 的Java程式,其執行速度比較慢。對於一個嵌入式應用來說,目標平臺的硬體資源往往非常有限,而應用程式的執行速度又是專案中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT 當然成了嵌入式Java的第一選擇。而在普通的基於PC或者是工作站的標準Java應用中,硬體資源對應用程式所造成的限制往往不是專案中的關鍵因素,所以在標準版的Java中則提倡使用Swing, 也就是通過犧牲速度來實現應用程式的功能。

通俗的話:

AWT 是抽象視窗元件工具包,是 java 最早的用於編寫圖形節目應用程式的開發包。
Swing 是為了解決 AWT 存在的問題而新開發的包,它以 AWT 為基礎的。

JFrame – java的GUI程式的基本思路是以JFrame為基礎,它是螢幕上window的物件,能夠最大化、最小化、關閉。

JPanel – Java圖形使用者介面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行巢狀,功能是對窗體中具有相同邏輯功能的元件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。

JLabel – JLabel 物件可以顯示文字、影象或同時顯示二者。可以通過設定垂直和水平對齊方式,指定標籤顯示區中標籤內容在何處對齊。預設情況下,標籤在其顯示區內垂直居中對齊。預設情況下,只顯示文字的標籤是開始邊對齊;而只顯示影象的標籤則水平居中對齊。

JTextField –一個輕量級元件,它允許編輯單行文字。

JPasswordField – 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點建立密碼(密碼)

JButton – JButton 類的例項。用於建立按鈕類似例項中的 "Login"。