swt與swing的比較

1. 組件體系:
  a) Swing:通過在父組件上動態調用add()和remove()方法,來對組件樹進行動態維護,因此,可以存在沒有父組件的子組件。
  b) SWT:通過在構造函數的參數中,指定父組件,因此,不可能存在沒有父組件的子組件。
  2. 組件繪製:
  a) Swing:通過調用組件的paint()方法來進行組件的繪製,組件進一步對他的子組件調用paint(),從而完成整棵組件樹的繪製。通過子類化,重寫paint()方法,可以完全定製一個組件的繪製。
  b) SWT:SWT組件只是本地平臺上實際組件的一個代理,實際組件採用win32編程方式進行繪製,繪製的過程不在JVM中完成。因此,子類化也不能對繪製進行完全定製。當SWT組件進行繪製時,他在完成了本地的繪製以後,會返回JVM,然後對所有已註冊的PaintListener發出通知,因此,通過註冊PaintListener可以對組件繪製進行一定程度上的修改。
  3. 事件模型:
  a) Swing:Swing中的事件會跟據當前的焦點進行發送。父組件不能對事件進行過濾。Swing中的事件監聽器都是有類型的,因此每個組件所能支持的事件類型是通過方法名來限定的。不能擴展。
  b) SWT:SWT中的事件也是根據當前的焦點進行發送。父組件不能對事件進行過濾。SWT中支持有類型的監聽器,也支持無類型的監聽器,通過addListener(type,listener),我們可以爲組件添加任何類型的監聽器。
  4. 包設計:
  a) Swing:Swing是一個純粹的組件庫,他沒有圖形的操作,他的繪製最終轉發給Java 2D來完成。
  b) SWT:SWT包含了組件庫和圖形庫,他的結構與AWT比較接近。 

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