<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, 評(píng)論 - 132, 引用 - 0
    數(shù)據(jù)加載中……

    【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE

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

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

            PS:SWING和JFACE的源碼質(zhì)量都是很高很高的,可以經(jīng)常撒兩眼~_~

            歡迎拍磚!


    本博客中的所有文章、隨筆除了標(biāo)題中含有引用或者轉(zhuǎn)載字樣的,其他均為原創(chuàng)。轉(zhuǎn)載請(qǐng)注明出處,謝謝!

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

    評(píng)論

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

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

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

    MVC模式在MFC時(shí)代就展現(xiàn)的十分完美,比Swing和JFace強(qiáng)大許多。
    2008-09-01 23:11 | Always BaNg.

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

    發(fā)現(xiàn)博主最愛東拼西湊。。。無聊
    2008-09-02 11:45 | tomay

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

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

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

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

    為何把 AWT 的控件叫做重量級(jí)的,而 SWING 的控件多數(shù)為輕量級(jí)的,就因?yàn)?AWT 的控件有一個(gè)操作系統(tǒng)對(duì)等的東西,AWT 是在趕工的情況下完成的。

    SWING 并沒有多少是基于 AWT 的,除了 AWT 中的事件類。我喜 SWT,因?yàn)樗氖褂糜?MFC 比較相仿。
    2008-09-02 13:34 | 隔葉黃鶯

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

    同意樓上所說的AWT是重量級(jí)組件,交由對(duì)應(yīng)的peer調(diào)用操作系統(tǒng)繪制.

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

    # re: 【Eclipse插件開發(fā)】閑侃AWT、SWING、SWT、JFACE  回復(fù)  更多評(píng)論   

    無聊···
    2010-08-13 09:00 | 愛愛愛
    主站蜘蛛池模板: 中文字幕乱码免费视频| 黄床大片免费30分钟国产精品| 久久国产精品2020免费m3u8| 亚洲综合另类小说色区| 极品色天使在线婷婷天堂亚洲 | 亚洲国产精品综合久久一线| 亚洲精品无码高潮喷水A片软| 免费观看黄网站在线播放| 久久精品国产亚洲av麻豆蜜芽| 久久久久免费看黄A片APP| 涩涩色中文综合亚洲| 免费看大黄高清网站视频在线| 亚洲精品无码久久久久秋霞| 免费不卡中文字幕在线| 一级做性色a爰片久久毛片免费| 黑人大战亚洲人精品一区| 国产亚洲免费的视频看| 亚洲人成网站影音先锋播放| 美丽的姑娘免费观看在线播放| 亚洲av永久综合在线观看尤物| 精品熟女少妇AV免费观看| 亚洲乱理伦片在线观看中字 | 亚洲精品人成无码中文毛片| 中国人免费观看高清在线观看二区 | 亚洲国产日韩一区高清在线| 最近中文字幕完整版免费高清| 亚洲一区二区三区在线| 国产麻豆免费观看91| 国产99精品一区二区三区免费| 亚洲AV无码国产丝袜在线观看| 18女人腿打开无遮掩免费| 亚洲偷偷自拍高清| 免费人成网站在线高清| 最新亚洲成av人免费看| 精品亚洲麻豆1区2区3区| 成全高清视频免费观看| 国产精品免费视频观看拍拍| 亚洲综合区图片小说区| 免费看片A级毛片免费看| a级黄色毛片免费播放视频| 亚洲乱码一二三四区麻豆|