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

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

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

    river_hiter

    初次感受SWT

    ?????? 由于無法忍受AWT或SWING的怪異界面和蝸牛般的速度,最近起了學習SWT的沖動。SWT(Standard? Widget? Toolkit)是由IBM推出的基于JAVA的圖形界面開發庫,之所以要說他是“基于JAVA的”的是因為在程序元編寫代碼時使用的JAVA語言,然而事實上,swt的底層代碼是由C語言來實現的,這點可以從Swt為什么要發布基于windows,linux……的操作系統的不同的包體現出來。swt比起awt和swing來說,不可同日而語,并且swt具有很好的穩定性,他最大化了操作系統的圖形構件API,只要操作系統提供了相應的圖形構件,swt會用JNI技術去調用他們,只有在那些操作系統中不存在的圖形構件,swt才回去實現他們。
    ??? public class FirstSwt{
     public static void main(String [] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.open();
      // 開始事件處理循環,直到用戶關閉窗口
      while (!shell.isDisposed()) {
       if (!display.readAndDispatch())
        display.sleep();
      }
      display.dispose();
     }
    }
    這是一個swt最基礎的程序,也是一個很基礎的模式,程序中首先定義了用Display display = new Display();定義了一個容器(component),然后用Shell shell = new Shell(display);定義了一個窗口(window),display是一個最大的容器,在此容器上可以放置很多shell,類似于awt的思想,每個組件自然就應該放置在shell中了。接下來的shell.open()將該shell打開,只有將shell打開之后,基于此shell上的組件才能被顯示出來。接下來的語句就是一個處理這個shell中事件的語句,在shell沒有被關閉前(shell.isDisposed()),系統會將所有的事件從事件隊列中取出,然后一個一個處理,如果沒有事件發生,則該display就處于sleep狀態,等待事件發生后將其喚醒。當shell關閉后,程序也就退出了。

    posted on 2006-11-08 21:36 何晏成 閱讀(2246) 評論(23)  編輯  收藏

    Feedback

    # re: 初次感受SWT 2006-11-09 09:27 hhh

    如果你非要這么說,
    那么我也可說SWT在重用和靈活性方面不可和swing同日而語!

    swing靈活和重用的藝術 renderer/editor

      說到GUI類庫的重用有一個很著名的模式:Composite模式。對,一個現代面向對象GUI類庫基本上都有這個模式的實現,當然也包括swing.不過早一點如MFC就沒有完整的實現,現在來看如果一個GUI類庫連基本的Composite模式都沒有實現基本上感覺是出土的文物啦!
         但是我們來看即便有了Composite模式,但Composite模式通常是構建靜態組合,如果要動態的替換一個復合組件內部的子元素如何辦呢?如此一來這個組件就只能定義自己的布局形式,而不能定死在這個布局形式內的元素。
         其實從用戶角度來說一個GUI元素通常就是兩種情況要么就是表現,要么就是處于和用戶交互狀態,這是它們的形態通常不一樣。所以組件不僅僅要只定義自己的布局形式,還要給于外部機會來配置當自己的子元素處于這兩種狀態時相應的UI組件是什么!
        
        swing通過renderer/editor達到了這種靈活性。如swing中JTable,JList,JTree等組件都只是定義了自己的布局形式。并且都可以配置renderer/editor,這樣你的renderer/editor實現就接管了組件里面元素的表現形式和交互形態。理論上你可以用任何JComponent作為組件里面元素的表現形式和交互形態。其靈活性和重用性達到了一個巔峰!
        
        以前還聊過一個JTable的例子!
        http://www.douban.com/group/topic/1112689/



    http://www.douban.com/group/topic/1261109/  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 09:32 hhh

    Swing是MVC設計的典范
    不管你的項目是否用到了Swing技術,我都要說,Swing是一個設計優秀的Java包,它充滿了大師的智慧。如果你學了Java卻連一個 Button還不會寫,就象你學習Visual Basic卻不會用Button,那可絕對是不能被原諒的。Swing技術的應用已經在國外大行其道,由于java的免費、易學以及大家對于java技術的充分信賴,好多公司早早的就把應用程序的一切,從后臺服務到前臺人機交互界面,統統移到了java開發上。Swing出現了快10年了,憑借其先進的設計思想,一直未曾落后于哪種語言的界面開發技術,使用和理解Swing的設計思想,對軟件開發者大有裨益。
      
      Swing的設計是MVC的典范。雖然MVC的概念有點泛濫,可是真正能夠理解并熟練掌握、在設計和開發里面自然流露的并不多見。記得用VC ++開發程序時候,MFC向導也是生成Document和View兩個類,當時一直奇怪為什么這么繞圈子。再看Swing的設計,則到處充滿了MVC的痕跡。仔細研究Swing中事件監聽、Model-View分離、Renderer/Editor機制、可插拔的LookAndFeel等機制,簡直就是一門藝術,充滿了美感。而如果你非常痛恨這些設計并覺得他們怪異,很可能你是剛從VB或者Delphi轉過來,這些快速開發工具幫助了你也“害”了你。
      
      Swing設計的不錯,不過可能過度學術化的設計也使得Swing跑起來并不靈巧,學習難度也大。這客觀上確實使得Swing一直沒有被廣泛使用,而且廣受詬病。記得以前“Swing有什么成功的應用嗎?”之類的帖子一直是熱門話題。IBM等則趁機抓住小辮子弄了SWT吸引了不少人,使得 Java GUI技術面臨分裂的危險。
      
      不過隨著JAVA的不斷升級和優化,Swing的速度一直在提高,美觀性也在改善,基于Swing的成功應用也越來越多了。關于Swing是否消亡或被SWT代替或是否能作桌面應用的爭論逐漸少了。不過喜歡并精通Swing技術的開發者,尤其在國內,依舊非常少。
      
      好在情況在轉好。Sun正意識到Eclipse和SWT所帶來的威脅,下了大力氣發展NetBeans,其最新版本對Swing GUI可視化設計的支持已經超過了所有對手,其Rich Client框架也走向成熟,這對Swing的發展和應用是一個很大的推動。隨著WEB熱潮的減退,人們又更多的開始理性的思考B/S和C/S架構的選擇,某些領域Swing技術已經成為首選的解決方案。隨著JGoodies、JIDE、TWaver等優秀Swing產品的不斷涌現,Swing會以更快速度在桌面應用中普及。   回復  更多評論   

    # re: 初次感受SWT 2006-11-09 09:34 hhh

    看JFace與Swing MVC的M

    在JFace的ContentViewer抽象中下面的三個方法反映它對待模型的思路:
      public void setContentProvider(IContentProvidercontentProvider)
      
      public void setInput(Object input)
      
      
      public void setLabelProvider(IBaseLabelProvider labelProvider)
      
      顯然setInput是用來配置view背后的數據,從它的參數類型(Object)來講應該是你的與view無關的領域模型.
      
      從這里就可以看出它和swing的根本差異.swing各種不同viewer(在swing的世界叫JComponent)背后的模型是因不同組件而不同的,模型的接口是反應了該組件特征的.
      如 JTable 背后的TableModel,TableModel接口的定義基本表達了作為一個二維表格期望獲得數據的方式如TableModel中有定義這樣的方法:
      Objetc getValueAt(int row,int column)
      
      在JFace中直接可以放入Object類型數據,但各種viewer不一樣對于拿數據的期望也不一樣,
      ContentProvider,LabelProvider解決了上述問題,不同ContentProvider定義了該viewer所期望的拿數據的接口,其實我覺得swing中的model在意義上類似于ContentProvider.
      
      其實感覺JFace的做法在盡量強制你必須構建獨立于GUI的模型.
      而swing的話并沒有這種侵入性,你可以直接實現viewer的模型接口如
      
      class Mymodel implenents TableModel{
      
      }
      
      也可以定義比較獨立的模型然后用對象適配器模式將它們適配到viewer model上!   回復  更多評論   

    # re: 初次感受SWT 2006-11-09 09:37 hhh

    在靈活性和重用性方面還未見過哪個工業界的GUI庫可以與swing比肩。
    swing的設計充滿了OO的藝術!
    有人說從很多角度來看swing都是一件藝術品,swing非常靈活靈活到你可以幾乎定制它的每一個方面。
      
      如果你學習 OO,MVC,設計模式。。。,而又想看看實際例子,那么swing正是你要的。  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 09:38 hhh

    其實我覺得現在swing模擬windows的視感(lookandfeel)已近很接近了.
      這里有swing的各種開源的lookandfeel,有些還是不錯的.
      http://www.open-open.com/61.htm
      
      還有swing本身架構沒有說swing的外觀應該是什么樣子的.所以以sun為swing實現的那個默認的lookandfeel來批評swing的樣子丑陋是不對的.
      
      swing的組件都是四兩撥千斤,模型和繪圖都是分離的,如
      JTable 就有TableModel ---->JTable<-----TableUI,從結構來說JTable完全扮演著控制器的角色.從API的使用者角度來說它是一個MVC體系的外觀,讓人想起了設計模式中的外觀模式.   回復  更多評論   

    # re: 初次感受SWT 2006-11-09 10:48 不一樣

    不是不想用swing呀,只是它速度太慢,外觀太丑。而SWT相反。  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 10:58 hhh

    to 不一樣

    難道你覺得netbeans,Jbuilder,IntelliJ IDEA,永中office...這些都很丑,都特別慢。
    且還是有很多 http://www.open-open.com/61.htm 優秀的lookandfeel.

    再次強調
    swing本身架構沒有說swing的外觀應該是什么樣子的.所以以sun為swing實現的那個默認的lookandfeel來批評swing的樣子丑陋是不對的.

    在cpu越來越快的年代靈活性和重用性更吸引人!!!  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 12:20 何晏成

    我并沒有否認Swing的重用和靈活性,但是他給我們的速度和外觀我想也應該是有目共睹的吧。
    “在cpu越來越快的年代靈活性和重用性更吸引人”,大哥,有速度快的更漂亮的的我們為什么不去用呢?而非得要用CPU來拖著一個沉重的包袱呢?
    當然,作為軟件開發者來說,我們也希望swing在這些方面能取得更大的進步。用一個優秀的包何嘗不是一件好事呢?  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 12:56 SeamanWang

    其實各有有缺點吧,我想這個問題主要應該看你需要用在什么樣的應用環境。
      回復  更多評論   

    # re: 初次感受SWT 2006-11-09 14:16 hhh

    但是他給我們的速度和外觀我想也應該是有目共睹的吧。
    ————————————————————————————
    我不知道你用的是jdk那個版本,5.0及以上swing的速度應該還是不賴的,再加上硬件環境也比以前好多了,速度差距很不明顯了!當這種差距變得看不見時還有何意義!!!

    至于外觀還是要我重復這句話:
    swing本身架構沒有說swing的外觀應該是什么樣子的.所以以sun為swing實現的那個默認的lookandfeel來批評swing的樣子丑陋是不對的.

    這里再補充一句,jdk6.0模擬各種os平臺的外觀已經相當一致了(使用了一些新的方法)。

    “在cpu越來越快的年代靈活性和重用性更吸引人”,大哥,有速度快的更漂亮的的我們為什么不去用呢?
    ————————————————————————————————
    問題是我們不僅要速度快,難道靈活性和重用性就不用考慮。我們來看看OO,一個對軟件界產生巨大影響的東西,但它有沒有使我們的軟件速度加快呢?沒有!!!應該說反而降低了!!! 他帶來的是靈活性和重用性,更強的抽象機制,更好的依賴管理。
    所以難道你不會從一個框架的架構設計,API角度去評價一個框架。


      回復  更多評論   

    # re: 初次感受SWT 2006-11-09 14:26 hhh

    swing是第一個讓我有震撼的 GUI庫。

    當你看了很多MVC,設計模式,OO的很多理論后。當用如powerbuilder,vb,mfc,...這些東西時發現難以表達,因為它們的設計似乎不鼓勵模型與視圖的分離.感覺他們的設計缺乏一致性!

    直到看到swing, 豁然開朗,才感覺一個真正OO的GUI庫!  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 15:51 溫柔一刀

    看了半天都是一個人的回復啊  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 16:03 hhh

    你不也回復了嗎?
    那你倒是也談談啊!  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 16:20 hhh

    http://www.servasoft.com/zh/index.htm
      ____________________________________________
      這個叫TWaver的東西就是在swing基礎上擴展的一套用于電信方面的GUI庫.寫的非常好,靈活而高效.上面有一個使用TWaver構建的demo.提供了webstart,如果你機器上已近安裝了JRE(java 運行環境),那么點那個Launch就可以運行.
      
      國內深入研究swing的人不多,開發TWaver的那幫家伙算NB的!



    SWING比SWT速度慢多少呢?
       http://community.csdn.net/Expert/TopicView3.asp?id=5031751
        
        我一直在想如果今天開發eclipse,那些開發者還會不會選擇再開發一個GUI庫。畢竟當年swing的實現和硬件環境都不盡如人意!!!  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 18:08 amp@java

    其實SWING的GUI還是有很多問題的,雖然可以讓人看起來覺得跟其他窗口沒什么區別,但一用起來就覺得區別很大,例如在windows里,選擇了一段文字之后點右鍵,就發現那菜單跟其他程序不一樣,有店突兀的感覺。當然,你可以把右鍵菜單改得跟其他windows程序一樣,但到了linux下又不同了。

    用一下NetBeans,Oracle JDeveloper,Eclipse,就會發現Eclipse最易用(先不管各自的功能有多強)。SWT的好處還是很多的,java在桌面程序上的失敗其實很大部分的原因在于Swing的丑陋。



    Look & Feel 并不是表面的東西,而是用戶習慣問題,Swing似乎并沒有有效地解決這個問題。

    我覺得Sun做的產品沒有一個好用,呵呵,當然,java本身除外。  回復  更多評論   

    # re: 初次感受SWT 2006-11-09 20:37 hhh[匿名]

    例如在windows里,選擇了一段文字之后點右鍵,就發現那菜單跟其他程序不一樣,有店突兀的感覺。當然,你可以把右鍵菜單改得跟其他windows程序一樣,但到了linux下又不同了。
    ________________________________________________________
    這叫什么?!這是和應用程序相關的吧!!!!!!!!!!!!!!
    我的應用程序在某個情況下右擊應該彈出些什么,這是有應用程序決定的。為什么怪到類庫呢!?
    那swt為此作了些什么呢?!

    用一下NetBeans,Oracle JDeveloper,Eclipse,就會發現Eclipse最易用(先不管各自的功能有多強)。SWT的好處還是很多的,java在桌面程序上的失敗其實很大部分的原因在于Swing的丑陋。
    ——————————————————————————————————————
    實際上這個也和應用程序設計有關,你也可以用swing做出 eclipse一樣的風格!

     http://www.swingui.com/index.html swingUI

     http://eos.sourceforge.net/ eclipse on swing

      回復  更多評論   

    # re: 初次感受SWT 2006-11-09 20:53 hhh[匿名]

    其實swing的目標就是建立一個獨立的GUI系統(獨立于OS),所以GUI的繪制都是自己實現(建立在java 2D上)。這樣帶來的好處就是可以拋開歷史包袱,從頭開始實現一個靈活,現代,面向對象,真正跨平臺的 GUI框架。

    當初swing設計思想是卓越的,Swing有著無與倫比的擴展性和靈活性,它采用了很多現代的UI理論,如renderer/editor等。只是礙于實現性能。

    但隨著swing實現的性能越來越高,硬件環境越來越好。swing的發展一定更好!

      回復  更多評論   

    # re: 初次感受SWT 2006-11-09 20:57 hhh[匿名]

    要說sun對于swing的失敗,不是swing設計思想和架構有問題。而是它們為swing實現的默認look & feel是糟糕的!  回復  更多評論   

    # SWT人幾個特點 2006-12-28 20:59 rehte

    我總結了一下喜歡SWT的人幾個特點:
    1.對于Swing保有很深的偏見,自從Java 2時代用過一段時間Swing后,被當時的Swing折磨透了,這時突然出現了SWT,于是頭也不回的進了SWT,從此之后再也沒有回頭看過一眼Swing。
    2.SWT初學者,對于SWT了解越淺越喜歡SWT。SWT程序員有個規律,對于SWT知識了解的越淺,越喜歡SWT,了解越深,越對SWT產生困惑,越知道如何使用SWT的bugzilla,喜歡SWT的程度和學習SWT的時間成反比關系。
    3.他們都深信兩大謊言:所謂平臺一致性和速度快。認為平臺一致性提升易用性,認為SWT的速度比Swing快。
    4.保守的人傾向與喜歡SWT,不喜歡Swing的靈活性。在Google趨勢搜索的結果是喜歡SWT和Eclipse的人基本上都在西歐,尤其以德國最多。喜歡Swing和NetBeans大部分都在美洲,尤其是巴西(跳桑巴舞的地方)。
    5.以前可能都使用過MFC和WinForm或者Delphi,很難適應Swing的框架模式。  回復  更多評論   

    # re: 初次感受SWT 2007-01-07 13:35 rehte

    Swing速度是否真的慢?我懷疑樓主的Java水平,的確Swing水平不高的人很難寫出速度快的swing程序來。這不是Swing本身的問題,往往是程序員自身水平的問題,如果你的水平很低的話,學SWT的結果還是一樣,這是和Swing和SWT的事件處理模型相關的,不懂它的人往往寫的程序很慢。
    不信走著瞧。  回復  更多評論   

    # re: 初次感受SWT 2007-10-29 19:30 wing5jface

    若是SWING速度不慢,早就應有N多的人去用寫桌面程序的了,人要面對現實

      回復  更多評論   

    # re: 初次感受SWT 2008-11-03 13:25 java的初學者

    郁悶!
    我竟然在NetBeans IDE 下用SWT的插件!

    NetBeans到底是不會支持 SWT的圖形化工具,

    我學SWT 的本源是SWING 的圖形不好看,到java1.6 SWING應該有很大的提升!

      回復  更多評論   

    # re: 初次感受SWT[未登錄] 2008-11-10 09:27 zz

    爭來爭去有個鳥用,喜歡用啥就用啥,到你發現不能滿足你的需要的時候,你就會發現另外一個的好,順便說一句,swing的漂亮和速度,是要程序員來實現的,你要實在沒能力就別用,用swt多好,還省得麻煩,能力不夠就別在這亂說  回復  更多評論   



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产jizzjizz免费视频| 国产va在线观看免费| 免费一本色道久久一区| 久久亚洲精精品中文字幕| 国产精品免费一区二区三区| 免费成人在线观看| 一级毛片视频免费观看| 狠狠色婷婷狠狠狠亚洲综合| 精品一区二区三区高清免费观看 | 99视频免费观看| 亚洲精品白浆高清久久久久久| a级毛片免费观看在线| 国产一卡二卡≡卡四卡免费乱码| 亚洲色精品VR一区区三区| 日本黄网站动漫视频免费| 亚洲人成黄网在线观看| 国产1000部成人免费视频| 亚洲制服丝袜中文字幕| www.999精品视频观看免费| 亚洲AV永久无码精品成人| 精品成人免费自拍视频| 精品亚洲成a人片在线观看少妇| 久久er国产精品免费观看2| 亚洲天天在线日亚洲洲精| 亚洲一区免费观看| 成人午夜亚洲精品无码网站| 精品成人一区二区三区免费视频| 性感美女视频免费网站午夜| 四虎影院永久免费观看| 久久青草免费91线频观看不卡| 久久青青草原亚洲av无码app | h视频在线免费观看| 美女裸免费观看网站| 亚洲精品无码久久久久秋霞| 永久免费无码日韩视频| 两性色午夜免费视频| 很黄很黄的网站免费的| 啊v在线免费观看| 精品国产亚洲一区二区三区| 亚洲精品成人片在线观看精品字幕| 亚洲国产精品无码久久SM|