<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Live a simple life

    沉默(zhu_xing@live.cn)
    隨筆 - 48, 文章 - 0, 評論 - 132, 引用 - 0
    數據加載中……

    【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE

           還記得大學里給別人當廉價勞動力(做點小項目,改善點生活~_~)的時候用了不少AWT、SWING,當時也沒有太多去想(當然也沒有絲毫能力去亂想),就是單純地當API來用。工作之后,一直做插件開發,也接觸了SWT、JFACE,當然,經驗也談不上豐富,平時很少寫界面UI的東西。今天閑著,就閑侃一下。
        
            【AWT和SWT】
            眾所周知,AWT和swt實現原理是不一樣的:AWT控件相當于是一筆一畫繡出來的,參加java.awt.Component.paint(Graphics g),性能可想而知了;而SWT中呢,是調用了操作系統后臺原生庫,org.eclipse.swt.widgets.Control類型中就沒有類似的paint方法了,但是有一個接口org.eclipse.swt.graphics.Drawable,有興趣的TX可以看一下。實現原理的不同帶來了性能和用戶視覺的差異,也就決定了AWT在某些應用場景下會被拋棄,SWT會被寵幸。
            
            【SWING和JFACE】
            SWING是基于AWT提供的MVC不完全實現,JFACE是基于SWT提供的MVC不完全實現,兩個小框架出來了。底層的AWT和SWT的取舍決定了是選擇SWING還是JFACE,雖然這樣,我們還是看一下兩者的主要差別和主要特點(個人意見、僅供參考)
            1、兩者的核心作用都是提供了viewer和模型封裝的概念,盡管如此,從設計實現上面講,SWING更加唯美一些,JFACE則更加側重于實用
            2、SWING和JFACE兩者都偏重于行為控制上下文,而對UI數據(例如,一個文本框控件中的內容)的管理都沒有做太多的設計。JFACE中略有改進,那就是提供了setData的概念,但是不好用~_~。其實說白了為什么沒有做這些的設計,估計是想把自由度開發給開發者,不想做過多的限制,畢竟SWING和JFACE兩個框架的核心就是去封裝底層控件。這間接給UI測試帶來了一些困難,設想如果沒一個Dialog都有一個數據池的概念,用戶的輸入會放入這個數據池,到dialog finish的時候,就從這個數據池中取數據,不再取訪問控件去數據,那么這樣在UI測試的時候可以更方便的去處理數據,很多時候不用去過多的利用鍵盤鉤子的東東
            3、JFACE是為了Eclipse而生的,雖然后來RCP出來了,又做了其他的包裝宣傳,典型的體現就是提供了JFace Text Framework和其他一些用戶構建Eclipse元素的UI支持。當然,也提供了一些系統資源管理(ImageRegsitry、ResourceManager等)等附加功能。
            4、SWING和JFACE都是提供了一個小框架,而且是MVC的不完全實現,并不是旨在解決UI創建的所有問題。當然,SWING相比JFACE來說更優雅一些,更mvc一些  

            【性能差距真那么大嗎?】
            不完全是。看看人家SUN的高手用AWT和SWING做的IDE工具,有那么差嗎???為什么我們一般開發者用AWT和SWING做出來的UI,效果就差不少呢???水平,SUN牛!!!
            
            
            【核心是什么】
            我們在接觸這些東西的時候,最核心的在于什么。個人感覺如下:
            1、基本機理,例如控件如何產生的、事件循環怎樣的、涉及到線程問題..
            2、SWING和JFACE的MVC思想,本質中的本質。
            3、JFACE提供的一些Eclipse特性的東西,例如JFace Text Framework、資源管理等

            PS:SWING和JFACE的源碼質量都是很高很高的,可以經常撒兩眼~_~

            歡迎拍磚!


    本博客中的所有文章、隨筆除了標題中含有引用或者轉載字樣的,其他均為原創。轉載請注明出處,謝謝!

    posted on 2008-09-01 17:23 zhuxing 閱讀(6985) 評論(6)  編輯  收藏 所屬分類: Eclipse Plug-in & OSGI

    評論

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    感覺搞圖形編程,一定要把最成功的Win32 API用一下,會有很多的收獲,特別是對于事件處理和GC。

    Swing框架與代碼很優美,但一是效率低,特別是高級控件如各種選擇框超慢,與Windows本身不協調,使用體驗差;二是再怎么使用lookandfeel,還是不美觀,總是感覺畫的不清晰,可能缺少Windows的GDI優化吧。

    MVC模式在MFC時代就展現的十分完美,比Swing和JFace強大許多。
    2008-09-01 23:11 | Always BaNg.

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    發現博主最愛東拼西湊。。。無聊
    2008-09-02 11:45 | tomay

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    @tomay
    謝謝你的指教
    2008-09-02 12:09 | zhuxing

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    分別在 AWT、SWING 和 SWT 的文本輸入框中點一下右鍵,你就知道哪個是描繪出來的,哪個是直接取用操作系統的。

    為何把 AWT 的控件叫做重量級的,而 SWING 的控件多數為輕量級的,就因為 AWT 的控件有一個操作系統對等的東西,AWT 是在趕工的情況下完成的。

    SWING 并沒有多少是基于 AWT 的,除了 AWT 中的事件類。我喜 SWT,因為他的使用于 MFC 比較相仿。
    2008-09-02 13:34 | 隔葉黃鶯

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    同意樓上所說的AWT是重量級組件,交由對應的peer調用操作系統繪制.

    應拿swt,jface與awt,draw2d與swing才具可比性.
    優劣看你的應用.
    swt,jface,再加上uiforms控件,還一些開源控件,這是遠比awt控件豐富.
    draw2d的控件與swing控件相比,又少的多的多.
    至于速度,看寫程序
    swt,與jface有些人很容易把內存用盡.像控件,color,image,Font有人總是忘記用了去dispose.我雖然做了幾年eclipse界面開發,但我還是喜歡swing,比如易于測試.
    2008-11-26 16:21 | jst designer

    # re: 【Eclipse插件開發】閑侃AWT、SWING、SWT、JFACE  回復  更多評論   

    無聊···
    2010-08-13 09:00 | 愛愛愛
    主站蜘蛛池模板: 精品亚洲AV无码一区二区三区| 亚洲国产精品无码久久| 日本免费精品一区二区三区| 国产在线ts人妖免费视频| 亚洲视频一区在线| 麻豆高清免费国产一区| 亚洲成年人电影在线观看| 久久WWW免费人成一看片| 中文字幕亚洲精品| 在线观看成人免费视频不卡| 亚洲成AV人片久久| 妞干网在线免费观看| 日本系列1页亚洲系列| 久久影视综合亚洲| 免费人成视频在线观看网站| 亚洲高清在线mv| 最新中文字幕电影免费观看| 无码天堂va亚洲va在线va| 中文字幕亚洲乱码熟女一区二区| 亚洲午夜一区二区电影院| 美女裸身网站免费看免费网站| 女人张腿给男人桶视频免费版| 久久久青草青青国产亚洲免观| 97亚洲熟妇自偷自拍另类图片| 亚洲AV综合色区无码一二三区| 一道本不卡免费视频| 国产a v无码专区亚洲av| a在线观看免费视频| 亚洲精品网站在线观看你懂的| 伊人久久国产免费观看视频| 亚洲精品无码AV人在线播放| 7x7x7x免费在线观看| 亚洲成av人在线观看网站| 黑人大战亚洲人精品一区| 98精品全国免费观看视频| 456亚洲人成影院在线观| 亚洲精品成人在线| 久久成人免费播放网站| 亚洲av成人一区二区三区观看在线 | 一级毛片a免费播放王色电影 | 亚洲精品无码久久毛片|