Swing的產生與優點(原創)

1.Swing與Awt的最大的區別:
Swing爲急於窗體的GUI應用開發設計,爲java跨平臺特性提供了卓越的支持.它完全沒有本地代碼,不受操作系統的影響,做到了真正的跨平臺應用,甚至能夠提供本地窗口系統不支持的其它特性.因此比AWT具有更強的實用性,同時比AWT程序擁有更加精緻的外觀感受.
 
      AWT只提供基本的組件,使很多設計變得複雜,且無法在不同的平臺下保持顯示風格的一致性.例如:如果建立一個按鈕Button對象,就會有一個按鈕(ButtonPeer)同其對象一起被建立,然後此按鈕對象會請求底層操作系統創建一個真正的按鈕.即在Windows NT 上執行,那麼創建的就是Windows NT按鈕,Linux 上執行,那麼創建的就是Linux按鈕.因此AWT組件外觀會受到底層操作系統的影響.
 
2.Swing的特點:
(1).Swing是由100%純Java實現的,Swing組件是用Java實現的輕量級( light-weight)組件,沒有本地代碼,不依賴操作系統的支持,這是它與AWT組件的最大區別。由於AWT組件通過與具體平臺相關的對等類(Peer)實現,因此Swing比AWT組件具有更強的實用性。Swing在不同的平臺上表現一致,並且有能力提供本地窗口系統不支持的其它特性。

(2).Swing採用了一種MVC的設計範式,即"模型-視圖-控制"(Model-View-Controller),其中模型用來保存內容,視圖用來顯示內容,控制器用來控制用戶輸入。

(3).Swing外觀感覺採用可插入的外觀感覺(Pluggable Look and Feel,PL&F)
 
3.Swing的類層次結構

  在javax.swing包中,定義了兩種類型的組件:頂層容器(JFrame,JApplet,JDialog和JWindow)和輕量級組件。Swing組件都是AWT的Container類的直接子類和間接子類。

  java.awt.Component
    -java.awt.Container
       -java.awt.Window
          -java.awt.Frame-javax.swing.JFrame
          -javax.Dialog-javax.swing.JDialog
          -javax.swing.JWindow
       -java.awt.Applet-javax.swing.JApplet
       -javax.swing.Box
       -javax.swing.Jcomponet

  Swing包是JFC(Java Foundation Classes)的一部分,由許多包組成


          描述
  Com.sum.swing.plaf.motif 用戶界面代表類,它們實現Motif界面樣式  
Com.sum.java.swing.plaf.windows 用戶界面代表類,它們實現Windows界面樣式
  Javax.swing   Swing組件和使用工具
  Javax.swing.border    Swing輕量組件的邊框
  Javax.swing.colorchooser   JcolorChooser的支持類/接口
  Javax.swing.event   事件和偵聽器類
  Javax.swing.filechooser   JFileChooser的支持類/接口
  Javax.swing.pending   未完全實現的Swing組件
  Javax.swing.plaf   抽象類,定義UI代表的行爲
  Javax.swing.plaf.basic   實現所有標準界面樣式公共功能的基類
  Javax.swing.plaf.metal 用戶界面代表類,它們實現Metal界面樣式
  Javax.swing.table   Jtable組件
  Javax.swing.text   支持文檔的顯示和編輯
  Javax.swing.text.html   支持顯示和編輯HTML文檔
  Javax.swing.text.html.parser   Html文檔的分析器
  Javax.swing.text.rtf   支持顯示和編輯RTF文件
  Javax.swing.tree   Jtree組件的支持類
  Javax.swing.undo   支持取消操作


4.MVC(Model-View-Control)體系結構

  Model:存儲組件數據的地方.如JCheckBox中的Model將存儲所有選項的值,並以boolean的值來表示,而JTable的Model則會存儲所有表格上的數據.

      View: 顯示組件的外觀.

     Controller:處理用戶在組件上的操作,並將改變後的數據存儲在Model中。

 

  爲了簡化組件的設計工作,在Swing組件中View和Controller兩部分合爲一體。每個組件有一個相關的分離模型和它使用的界面(包括視圖和控件)。比如,按鈕JButton有一個存儲其狀態的分離模型ButtonModel對象。組件的模型是自動設置的,例如一般都使用JButton 而不是使用ButtonModel 對象。另外,通過Model類的子類或通過實現適當的接口,可以爲組件建立自己的模型。把數據模型與組件聯繫起來用setModel( )方法。

      Swing組件中的Model可以分成三類:

      (1).存儲組件內將被用來操作的數據.

      (2).存儲控制組件操作模式的數據

      (3).存儲組件本身性質的數據模式



  MVC是現有的編程語言中製作圖形用戶界面的一種通用的思想,其思路是把數據的內容本身和顯示方式分離開,這樣就使得數據的顯示更加靈活多樣。比如,某年級各個班級的學生人數是數據,則顯示方式是多種多樣的,可以採用柱狀圖顯示,也可以採用餅圖顯示,也可以採用直接的數據輸出。因此在設計的時候,就考慮把數據和顯示方式分開,對於實現多種多樣的顯示是非常有幫助的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章