国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

SWT和Swing代碼的區別

開發 后端
本文介紹SWT和Swing代碼的區別,包括第一個不同點就是 SWT 的類庫結構不像 Swing, 沒有單一的父組件. SWT 中有好幾個父類等。

筆者過去學習過Swing(也算是AWT的增強版吧), 現在開始學習一下 SWT, 還沒有開始深入 JFace 和 RCP, 一步步來吧. 先學好基礎的, 又不用著急做項目用. 本文討論的內容僅限于我已知的 SWT和Swing 范圍, 希望能對有 Swing 經驗的人快速了解 SWT 有所幫助.

***個不同點就是 SWT 的類庫結構不像 Swing, 沒有單一的父組件. SWT 中有好幾個父類:
◆Widget —— 基本的 SWT GUI 組件(類似于 Java AWT 中的 Component 和 Swing 中的 JComponent)。Widget 是一個抽象類。
◆Control —— 擁有操作系統的對等物的窗口小部件(換句話說,在操作系統中具有同一身份)。Control 是一個抽象類。
◆Composite —— 包含其他控件的控件(類似于 Java AWT 中的 Container 和 Swing 中的 JPanel)。
◆Item —— 其他控件包含的窗口小部件(該控件可能不是復合控件),比如列表和表。注意,包含一些項的控件很少包含其他控件,反之亦然。Item 是一個抽象類。

SWT 的組件不能隨意繼承, 其源代碼中會標注: IMPORTANT: This class is <em>not</em> intended to be subclassed.如果你那樣做了, 運行的時候 SWT 系統就會報錯, 也不能任意包含子組件. 某些組件, 例如 Tree, 只能接收 TreeItem 作為其子組件. 這樣在寫一些可重用的圖形組件的時候必須注意, Swing 中的寫法不能直接套用在 SWT 中.

Swing 的所有圖形界面類都繼承自 java.awt.Container, 這意味著所有的 Swing 組件都可以包含任意的子組件, 也可以被繼承. 這是兩個類庫的***個不同點.

第二個不同點就是 SWT 沒有利用 Java 的自帶垃圾收集功能來管理對象的銷毀,  大部分對象都必須調用 dispose() 方可完成資源的釋放.

第三個不同點就是在組件的顯示上, SWT 抽象了一個 Display 對象來處理 SWT 和操作系統底層組件的通信, 資源申請釋放, 事件循環, 任何顯示的 SWT 組件必須有且僅有一個 Display 對象.

第四個不同點就是 Swing 的組件實現了 MVC 機制, 但是 SWT 沒有(目前來看)提供 MVC 機制. 也就是說絕大多數 SWT 組件都是不可以更換顯示的外觀的, 我的意思是例如像皮膚這樣的機制, 例如:實現一個 Office 2003 外觀的橙色菜單條的顯示, SWT 是不能通過簡單的編碼來實現的(也許有, 但是還沒找到相關的資料).

SWT 的每個組件對象提供了 setData(Object) 這樣的方法來給組件存儲一個或者多個數據對象, Swing 中沒有類似的概念.

第五個不同點就是絕大多數的 SWT 組件創建的時候都必須指定父組件和風格屬性, 也就是必須有一個 parent 對象, 也不能運行的時候動態變更父組件, 具體例如 Menu 對象里有 Decorations getParent () , 但是并無對應的 setParent() 方法. 組件創建之后即自動加入父組件成為其一員, 這和 Swing 的必須通過 add() 方法來加入父組件是不一樣的. 大多數的 SWT 組件不提供無參數的構造器, 這就意味這他們不是 JavaBean, 這點上 Swing 的絕大多數組件都是 JavaBean.

總結以上這些內容我們可以感覺到 SWT 更像是操作系統本地組件的一種封裝, 而不是基于 Java OO 的概念對其進行映射, 其優點就是數據結構簡單.

好了, 接下來還是通過一些SWT和Swing的代碼來比較吧.***個是經典的 Hello World

SWT 版本

  1. import org.eclipse.swt.widgets.*;  
  2.  
  3. public class SWTHelloWorld {  
  4.  
  5. public static void main(String[] args) {  
  6. Display display = new Display();  
  7. Shell shell = new Shell(display);  
  8. shell.setText("Hello World!");  
  9. shell.open();  
  10. while (!shell.isDisposed()) {  
  11. if (!display.readAndDispatch())  
  12. display.sleep();  
  13. }  
  14. display.dispose();  
  15. }  

Swing 版本

  1. import javax.swing.JFrame;  
  2.  
  3. public class SwingHelloWorld {  
  4.  
  5. public static void main(String[] args) {  
  6. JFrame frame = new JFrame();  
  7. frame.setTitle("Hello World!");  
  8. frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
  9. frame.setSize(400, 400);  
  10. frame.setVisible(true);  
  11. }  

SWT 的 Text 屬性在不同的組件中有不同的意思, 對于窗體來說它是標題, 對于控件來說它是顯示的文本, Swing 中這個是分開的, 對于窗口來說是 Title 屬性, 對于控件來說是 Text 屬性. SWT 的事件循環基于顯式的 while 模式, 而 Swing 已經在底層封裝好了事件的循環和處理. 所以這兩段代碼最明顯的不同就是 SWT 多了時間循環的部分, 即文中粗體的部分.

接著我們來看看繼承 SWT 的組件會有什么后果. 在 Swing 中繼承一個組件然后向其中添加子組件, 例如建立一個自定義的工具欄, 然后向其中加入子欄目, 并***顯示出來, 這是經常進行的操作, 再看看 SWT 中:

  1. import org.eclipse.swt.widgets.Display;  
  2. import org.eclipse.swt.widgets.Shell;  
  3. import org.eclipse.swt.widgets.ToolItem;  
  4. import org.eclipse.swt.SWT;  
  5.  
  6. public class NewToolBar extends org.eclipse.swt.widgets.ToolBar {  
  7.  
  8. public static void main(String[] args) {  
  9. try {  
  10. Display display = Display.getDefault();  
  11. Shell shell = new Shell(display);  
  12. new NewToolBar(shell, SWT.NULL);  
  13.  
  14. shell.open();  
  15. while (!shell.isDisposed()) {  
  16. if (!display.readAndDispatch())  
  17. display.sleep();  
  18. }  
  19. } catch (Exception e) {  
  20. e.printStackTrace();  
  21. }  
  22. }  
  23.  
  24. public NewToolBar(Shell parent, int style) {  
  25. super(parent, style);  
  26. new ToolItem(this, SWT.NULL);  
  27. }  
  28.  
  29. }  

以上是SWT和Swing代碼的區別

【編輯推薦】

  1. 概述Swing大多數控件
  2. GUI程序與Swing中的線程
  3. 淺析Swing.SWT和AWT的區別
  4. AWT和Swing的區別
  5. 淺談Swing中提供了JOptionPane
責任編輯:佚名 來源: 電子工業出版社
相關推薦

2009-07-17 09:36:14

SWT和Swing的區

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-15 15:15:42

比較Swing和SWT

2009-07-16 13:37:33

Swing和AWT

2009-07-10 11:07:18

Swing和SWT

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 16:30:41

Swing與SWT

2009-07-15 10:23:51

Swing SWT集成

2009-07-14 15:01:02

AWT和Swing

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

事件監聽器SWT和SwingAWT

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-15 15:35:59

Swing程序Swing性能

2020-11-10 09:20:06

垃圾代碼優質代碼編輯語言

2009-07-17 09:07:20

2009-07-17 10:11:55

AWT和Swing

2009-07-15 09:24:30

Swing動態刷新

2011-04-15 17:33:39

SWINGAWT

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-07-14 16:07:59

調用JavaFX代碼Swing程序
點贊
收藏

51CTO技術棧公眾號

高清久久一区| 日韩亚洲精品在线| 午夜久久久久久久久| 这里只有精品66| 99re热精品视频| 欧美一区二区精品在线| 91日韩视频在线观看| 久久久久99| 亚洲在线www| 亚洲成a人片| 午夜av区久久| 欧美精品videosex极品1| 欧美制服第一页| 日韩欧美精品在线不卡| 亚洲人体一区| 黑人玩欧美人三根一起进| 欧美成人午夜激情| 中文字幕网在线| 97se狠狠狠综合亚洲狠狠| 精品国产第一页| 国产一区二区三区四区五区| 日韩网站免费观看高清| 懂色av一区| 欧美日韩一区二区三区免费看| 免费人成短视频在线观看网站| 99久久综合国产精品| 中国成人亚色综合网站| 国产日韩欧美| 亚洲aaaaaa| 久久国产亚洲| 国产成人综合av| 日韩有码中文字幕在线| 色综合色综合网色综合| av成人在线观看| 亚洲色图第三页| 2020av在线| 日韩精品亚洲元码| 国内在线免费视频| 精品国精品国产尤物美女| caoporn免费在线| 欧美一区二区免费| 色呦呦网站在线观看| 日韩久久精品一区| av香蕉成人| 欧美一级高清片| 青春草在线免费视频| 精品久久久久久久久久久院品网| av在线影院| 欧美精品一区二区三区很污很色的| 欧美老女人性开放| 91高清在线观看| 麻豆传媒在线观看| 精品999久久久| 亚洲欧洲自拍| 中文字幕日韩在线视频| 96视频在线观看欧美| 欧美理论片在线观看| 青青草久久爱| 亚洲综合在线做性| 国产精品呻吟| 亚洲午夜精品国产| 成人在线看视频| 尤物在线网址| 成人性视频免费网站| 一级毛片国产| 噜噜爱69成人精品| 蜜桃成人在线| 麻豆精品在线视频| 人妻久久久一区二区三区| 2019国产精品| 狠狠干夜夜操| 欧美三级日本三级少妇99| 青青草原国产在线| 日韩中文字幕视频在线| 国产一区二区三区亚洲| 成人午夜在线视频一区| 午夜宅男久久久| 日韩黄色片在线| 国产精品私房写真福利视频| 在线视频资源站| 欧美一区二区人人喊爽| 日韩专区视频| 91精品在线观看视频| 小嫩嫩精品导航| 国模吧无码一区二区三区| 精品国产乱码久久久久久婷婷| 老司机av在线免费看| 久久久国产精品一区| 亚欧美无遮挡hd高清在线视频| 性欧美大战久久久久久久免费观看| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲欧美影院| 91在线你懂得| 狠狠干在线视频| 精品噜噜噜噜久久久久久久久试看| 最新亚洲国产| 亚洲影影院av| 成人免费视频视频| 欧洲伦理片一区 二区 三区| 亚洲欧美日韩精品久久奇米色影视 | 日韩中文av在线| 99精品在线| 搞av.com| 欧美日韩一级片在线观看| 9999在线精品视频| 久久99影院| 亚洲天堂免费看| videos性欧美另类高清| 91系列在线播放| 久久亚区不卡日本| 91蜜桃在线视频| 性欧美激情精品| 国精品**一区二区三区在线蜜桃| 亚洲52av| 久久视频中文字幕| 日韩在线一二三区| 在线欧美一级视频| 高清视频欧美一级| 国产一区二区三区av电影| 国产永久免费高清在线观看 | 成人毛片av在线| 日韩av理论片| 成人不卡免费av| 国产黄a三级三级三级av在线看| 午夜免费日韩视频| 国产高清一区日本| 男女污视频在线观看| av在线播放天堂| 精品国产乱码久久久久久老虎| 精品女人视频| 熟妇人妻va精品中文字幕| 国产精品不卡一区二区三区| 久草资源在线观看| 亚洲一区二区av在线| 99久久亚洲国产日韩美女| 久久久久欧美| 欧美日韩亚洲91| 免费成人三级| 男人添女人下面高潮视频| 精品国产免费人成电影在线观看四季| 欧美独立站高清久久| 香港日本韩国三级网站| 中文字幕在线日韩| 久久精品女人| 成人在线观看网站| 国产啪精品视频| 国产精品久久看| av日韩久久| 五十路熟女丰满大屁股| 日韩成人xxxx| 日本特黄久久久高潮| 免费不卡视频| 精品网站在线看| 欧美视频一区在线| 午夜精品毛片| 羞羞视频在线免费看| 国产精品久久久久久久一区探花 | 中文字幕在线免费| 国产成人免费在线视频| 美女日批视频在线观看| 日本不卡二区高清三区| 欧美日韩不卡视频| 男人的天堂亚洲在线| 1区2区在线观看| 伊人久久大香线蕉午夜av| 精品美女在线观看| 日本欧美一区二区| 成人在线黄色电影| 无码人妻精品一区二区蜜桃百度| 亚洲欧美一区二区三区情侣bbw| 国产成人av资源| 日韩在线电影| 国产又猛又黄的视频| 欧美一级在线亚洲天堂| 亚洲一区二区三区四区五区黄| 久久久久av| 香蕉视频免费在线播放| 欧美精品久久久| 亚洲精品一区二区三区不| 91网站在线播放| 国产成人手机高清在线观看网站| 在线国产小视频| 噜噜噜噜噜久久久久久91| 日韩成人网免费视频| 91女神在线视频| 精品freesex老太交| 久久精品蜜桃| 中文字幕日韩一区二区三区不卡| 一区二区成人av| 中文av一区二区| 一区二区不卡| 色帝国亚洲欧美在线| 亚洲欧美日韩综合一区| 久久久精品2019中文字幕神马| 亚洲少妇屁股交4| 激情欧美亚洲| 台湾佬中文娱乐久久久| 天天干天天综合| 91手机在线视频| 亚洲女人天堂网|