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

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

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

    Java桌面技術(shù)

    Java Desktop Technology

    常用鏈接

    統(tǒng)計(jì)

    友情連接

    最新評(píng)論

    打造專業(yè)外觀-九宮圖

        長(zhǎng)久以來,Java被認(rèn)為是服務(wù)器端的佼佼者,而在客戶端方面不被看好,特別地MicroSoft的Windows系列幾乎壟斷了桌面應(yīng)用。所以在大多數(shù)人看來只要一提起開發(fā)客戶端,首先想到的是VB、Delph。拒絕Java的原因無非是速度慢、Swing外觀丑陋這2點(diǎn)。對(duì)于前者已經(jīng)成為歷史了,而對(duì)于后者,抱怨Java設(shè)計(jì)的界面丑陋的那些人一定桌面開發(fā)經(jīng)驗(yàn)淺顯、或者只會(huì)依賴VB那種托拽生成組件的那些非高手。再有可能就是傳統(tǒng)桌面開發(fā)員中的VB忠實(shí)fans,他們不愿意接受新東西。其實(shí)目前而言,Java開發(fā)桌面應(yīng)用不僅能將上述缺點(diǎn)消除,Java最重要的是能夠跨平臺(tái)運(yùn)行,這是其他語言不能達(dá)到的,如果客戶端使用VB開發(fā)的話,那么還可能要考慮系統(tǒng)其他部分的開發(fā)是否也要用VB或者微軟支持的產(chǎn)品。目前用Java語言開發(fā)的客戶端已不少見,IBM Lotus旗下的Sametime系列就是很好的例子,雖然其7.5已經(jīng)將界面全部改為SWT實(shí)現(xiàn)而不再是AWT,但至少能說明Java作為桌面開發(fā)絕不是弱者。而且調(diào)查顯示Visual Basic開發(fā)用戶直線下降。詳見http://blog.sina.com.cn/s/blog_4b6047bc010006v9.html

        對(duì)于一般界面需求而言,簡(jiǎn)單的桌面組件完全可以滿足用戶的需求,這些簡(jiǎn)單至極的組件已經(jīng)被集成進(jìn)組件托盤中了,如果你用netbeans或者安裝Eclipse的VE插件,完全可以只通過托拽的方式將組件生成并放置在指定的地方。至多需要你對(duì)常用布局管理器有少許了解。但是單憑這些現(xiàn)有的玩意很難打造出專業(yè)的外觀。比如一個(gè)頂層窗口,如果你用swing組件庫中的JFrame或SWT中的Shell,那么它的外觀充其量和本地的外觀一致,這個(gè)本地化外觀有窗口的標(biāo)題欄,標(biāo)題欄文字出現(xiàn)的位置,Windows是圖標(biāo)左對(duì)齊,Solaris是居中,和默認(rèn)的最小化、最大化、關(guān)閉等按鈕。另外還有固定尺寸和外觀的邊框,盡管在Windows Vista中這些元素已經(jīng)很美觀,但是某些軟件如即時(shí)通訊類軟件,美工一定會(huì)單獨(dú)設(shè)計(jì)出一套截然不同的外觀叫你去實(shí)現(xiàn)。就拿一個(gè)窗口來說,如下圖:

    我從事Java桌面相關(guān)的工作有1年半了,起初我依賴JButton、JScroll等基礎(chǔ)組件,BorderLayout、FlowLayout等現(xiàn)成的布局管理器企圖能實(shí)現(xiàn)類似MSN的外觀效果,但是實(shí)際看來是完全不可能的,所以我當(dāng)時(shí)就下了這樣的結(jié)論,哪怕現(xiàn)在我依然認(rèn)為是正確的:“拋棄所有的外觀設(shè)計(jì)工具和一切現(xiàn)有的桌面組件及布局管理器,一切的一切必須自定義實(shí)現(xiàn),設(shè)計(jì)工具最多能替你完成一半”。所以當(dāng)時(shí)界面部分的代碼是我一行一行寫出來的,為了不做重復(fù)的勞動(dòng),定義了不少組件如Button,CheckBox,ComboBox(參見用SWT實(shí)現(xiàn)MSN風(fēng)格的下拉框)、Slider(參見SWT自定義組件之Slider)。
    布局管理器完全不用,因?yàn)樗鼤?huì)給你的組件布局帶來很大限制。取而代之的是為容器組件添加ComponentListener監(jiān)聽器(SWT的實(shí)現(xiàn)是ControlListener)。
    下列是我基于這個(gè)理念開發(fā)的界面截圖。







        
        



        
        作為打造專業(yè)外觀的第一步,應(yīng)該學(xué)會(huì)如何去分解。介紹一種常見的分解方法——九宮格。如下圖所示


    九宮格的設(shè)計(jì)思想是將組件分成9個(gè)組成部分,四個(gè)邊、四個(gè)角、中心部分作為內(nèi)容放置其他組件。為了敘述方便,這9個(gè)部分依次取名為northwest(左上)、northeast(右上)、north(北)、southwest(左下)、southeast(右下)、south(南)、west(西)、east(東)、content(中心內(nèi)容窗格)。
    這9個(gè)部分的布局不難理解,例如northwest始終位于左上,無論窗口大小如何變動(dòng)northwest都不會(huì)改變大小和位置;同理northeast始終位于右上位置;而north的左邊緊貼northwest的右端、右邊緊貼northeast的左邊,所以north的長(zhǎng)度計(jì)算應(yīng)該是窗口的長(zhǎng)度減去northwest和northeast的長(zhǎng)度之和。同理,剩下幾部分的布局不難計(jì)算。
        還有一點(diǎn)是很重要的,如果你是用SWT組件,務(wù)必把Shell的樣式設(shè)置成SWT.NO_TRIM,也就是說這樣的頂層窗口沒有標(biāo)題欄和邊框,一些由你來修飾。如果你用Swing,請(qǐng)使用JWindow而不是JFrame,道理同上。
        雖然上述實(shí)現(xiàn)界面程序是用SWT編寫的,但是不代表SWT很強(qiáng)大,Swing才是王者,你可以這樣理解,SWT這樣的怪胎都能做出如此效果,Swing更沒問題了。
        參考程序這里下載

        本文只是介紹了九宮格的概念,在實(shí)際開發(fā)中可能需要對(duì)九宮格分解法進(jìn)行擴(kuò)展,比如在九宮格的基礎(chǔ)上再分解,粒度由你來掌握。演示程序窗口只是簡(jiǎn)單地實(shí)現(xiàn)了邊框和內(nèi)容窗格的渲染,不能拖拽移動(dòng)和改變尺寸、沒有標(biāo)題和功能按鈕,如果你仔細(xì)看還會(huì)發(fā)現(xiàn)邊角沒有被抹去,也就是說被有實(shí)現(xiàn)圓角窗口,這些功能會(huì)在后續(xù)的文章中一一介紹如何實(shí)現(xiàn)。

        至于上面所說UI代碼一行一行寫出來,是有些費(fèi)事,對(duì)于這個(gè)問題我的看法是這樣的:某些界面是不需要花大力氣渲染的,比如說配置界面,沒有哪些客戶端要求那種界面也強(qiáng)調(diào)很酷的外觀,所以對(duì)于簡(jiǎn)單的界面,可以借助工具生成代碼,必定工具還是可以幫你做50%的事情。第二就積累一些組件庫,比如自定義一些可重用組件,就像前面介紹的ComboBox和Slider,如果不能完全重用,至少可以將代碼作為模板,少許改動(dòng)就可變成另一套外觀風(fēng)格,研讀前面介紹的ComboBox和Slider你會(huì)發(fā)現(xiàn)替換里面的圖片或顏色常量就可輕松換膚,如果你的UI是基于swing的,那么你可以自定義L&F來實(shí)現(xiàn)基本的外觀,關(guān)于L&F后面定會(huì)花大量時(shí)間整理出完整教程。第三就是利用配置的方式將UI組件的生成和布局從.java中移出來,這樣不僅可以省去大部分代碼量,而且配置文件簡(jiǎn)短易讀的特點(diǎn)是眾所周知的,Java Web項(xiàng)目的web.xml就是很好的例子,Spring就更不用說了。配置方式后面也會(huì)介紹。第四點(diǎn),如果你只會(huì)VB、VC那種拖拽式開發(fā),那你永遠(yuǎn)算不上高手,我曾經(jīng)用MFC寫程序時(shí)抱怨過“有那么多按鈕卻看不見一行CButton聲明”,那會(huì)使你永遠(yuǎn)不了解底層是如何實(shí)現(xiàn)的,所以我不喜歡那種方式,如果你有能力,完全可以寫一個(gè)Framework封裝你的UI組件,配置生成的方式就是一例。

        今后還會(huì)寫大量關(guān)于Java GUI方面的帖子,并且會(huì)和Sun工程研究院的陳維雷先生合作發(fā)布L&F技術(shù)貼,他的博客https://blogs.oracle.com/Swing/想必大家很熟悉了。雖然當(dāng)今的web2.0時(shí)代人們很少關(guān)注C/S應(yīng)用,但是一些高端應(yīng)用仍舊采用C/S模式,瀏覽器這個(gè)通用客戶端能做的事還很有限。而且Sun也開始向桌面進(jìn)軍,JDK1.6的進(jìn)步就能很好地說明這一點(diǎn),更另人興奮的是Java桌面技術(shù)有添加了一個(gè)新成員——JavaFX,又有好消息稱JDK7.0中的AWT將加入不規(guī)則窗體和半透明窗體的支持,希望有一天Swing能壟斷桌面。

    posted on 2007-11-03 17:56 sun_java_studio@yahoo.com.cn(電玩) 閱讀(18207) 評(píng)論(45)  編輯  收藏 所屬分類: NetBeansGUI Design

    評(píng)論

    # re: 打造專業(yè)外觀-九宮圖 2007-11-03 19:29 eddie

    樓主太強(qiáng)大了。拜一個(gè)。
    由于是Linux程序員出身,對(duì)GUI程序的設(shè)計(jì)一竅不通。最近正在自學(xué),樓主給點(diǎn)建議罷。我覺得GUI程序如果真要自己寫的話,太費(fèi)時(shí)間了??墒怯每梢暪ぞ弋嫷脑挘指杏X不理解原理,心里沒有底氣。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-03 22:31 BeanSoft

    頂了! Office 啊, IM 啊, 說白了都是自定義組件, 自己畫圖. 游戲嘛, 也算是一種了. 樓主 GUI 高手呵呵.

    如果仔細(xì)研究 XP 的換膚(桌面主題), 你也會(huì)發(fā)現(xiàn)是九宮格的布局, 一張圖, 但是畫的時(shí)候切成9塊. 一個(gè)按鈕需要6個(gè)圖.  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-03 22:53 Matthew Chen

    看樓主的文章,一時(shí)豁然開朗,gui原來可以是這樣的,以前也下載過很多軟件,最近才慢慢開始注意界面布局的特點(diǎn)和提供用戶體驗(yàn)方面的東西,感覺歐美軟件逐漸在界面上追求簡(jiǎn)單和易用,ComponentListener的思想有時(shí)比布局管理器容易和適合開發(fā)的需要。
    樓主提到Java已經(jīng)可以在桌面應(yīng)用領(lǐng)域挑戰(zhàn)C/C++,VB,Delphi等等,但是這類工具生成的是編譯型的機(jī)器代碼,具有高的執(zhí)行效率和借助平臺(tái)特有優(yōu)勢(shì),盡管Java跨平臺(tái),又有JIT即時(shí)解釋器在一定程度上提升運(yùn)行速率,但是否語言級(jí)別和平臺(tái)級(jí)別的一些瓶頸會(huì)成為它開發(fā)上的局限性呢,比如,我現(xiàn)在涉及對(duì)數(shù)據(jù)的壓縮解壓和即時(shí)取用,要求高響應(yīng)的速度,我想可能的突破是好的算法實(shí)現(xiàn),而這一層面上對(duì)數(shù)據(jù)結(jié)構(gòu)的要求相對(duì)獨(dú)特——針對(duì)位的操作,而Java的基本數(shù)據(jù)類型中,幾乎是基于字節(jié)的,boolean在底層數(shù)據(jù)實(shí)現(xiàn)上也不例外(希望我沒理解錯(cuò)),這在實(shí)現(xiàn)很多算法上并不理想,不知樓主的意見如何?
    說到swt,我也先學(xué)了點(diǎn)swing再來學(xué)的,如果有說的不對(duì)的請(qǐng)指出,除了無法獲得jdk的標(biāo)準(zhǔn)集成支持外,swt可以說在各個(gè)方面都勝過awt,之所以說awt是因?yàn)槎叩膶?shí)現(xiàn)是相似的對(duì)等體思路,swt在這方面作得很好了,那可以假設(shè)swt和awt在速度上是同一級(jí)別的東西,如果IBM現(xiàn)在搞基于swt基礎(chǔ)之上的純繪制桌面應(yīng)用,就相當(dāng)于在swing的同一級(jí)別之上,這方面IBM沾上邊的象GEF,Draw2D可能有點(diǎn)聯(lián)系吧,它有可能作到類似swing的程度和規(guī)模嗎?就算不行差一點(diǎn),但保持相同的速度級(jí)別我想還是有很大作用的,比較一下:awt是弱的,但基于其之上的swing是繪制一切無所不能的;swt是強(qiáng)的,而在其之上作為補(bǔ)充的純繪制api也能成為其補(bǔ)充,在我看swt的介紹時(shí)看到這一句,對(duì)平臺(tái)缺失的組件用Java繪制,這種繪制指的其實(shí)是用平臺(tái)已有的swt組件進(jìn)行組合獲得復(fù)合控件,我看過eclipse Nebular項(xiàng)目,主要的自定義控件思想也是這樣的,它一方面基于高效的本地控件來復(fù)合,同時(shí)也可能引入本地控件的問題。但是就現(xiàn)階段來說,sun對(duì)swing的支持還未全面鋪開到最關(guān)系用戶切身體驗(yàn)的范圍,舉我上次評(píng)論說過的JFileChooser,速度和awt是秒和毫秒的差距,當(dāng)然,這是可以通過編程手段來忽悠用戶的,比如開個(gè)線程,在打開的第一時(shí)間在后臺(tái)創(chuàng)建備用,就比如jdk demo中的swingset2的方式,但是,這比較讓人難以接受,我只為了提供一個(gè)讓用戶選擇路徑的控件,用完就扔掉的東西,卻不得不忍受全繪制界面帶來的時(shí)間延遲,真的很不值得。
    寫到這里,只感覺腦袋空空,好像成不了文章了,只是還是想和大家分享,希望有人能討論,希望想法沒有浪費(fèi)。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-03 23:07 sun_java_studio@yahoo.com.cn(電玩)

    @eddie
    初學(xué)JavaGUI,最好買一本專門介紹swing的書,O'REILLY系列的swing第二版就不錯(cuò),封面是猴子的那本。如果你想深入了解桌面開發(fā),不要一上來就學(xué)SWT,除非工作需要,如果熟悉swing的話翻回來看SWT是毫不費(fèi)力的。切記的一點(diǎn)是,初學(xué)Java GUI不要用任何可視化工具,道理就像沒學(xué)會(huì)走路就想飛一樣。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 00:12 sun_java_studio@yahoo.com.cn(電玩)

    @Matthew Chen
    “樓主提到Java已經(jīng)可以在桌面應(yīng)用領(lǐng)域挑戰(zhàn)C/C++,VB,Delphi等等”,只是我的希望,我覺得可行是第一,除C++,VB、Delphi的開發(fā)者群會(huì)逐漸減少,而C++程序員不會(huì)把重點(diǎn)放在純粹的桌面開發(fā),他們通常會(huì)借助VC++或C#那種拖拽工具來實(shí)現(xiàn),基于此就會(huì)導(dǎo)致第二個(gè)問題。第二,Java的跨平臺(tái),這是得天獨(dú)厚的優(yōu)勢(shì)。
    至于Java性能的問題,我剛派到BEA工作時(shí)針對(duì)終端為什么采用Java語言問過技術(shù)高層,他們的解釋是:可以定一個(gè)性能指標(biāo),假設(shè)這個(gè)指標(biāo)是1G CPU、256M內(nèi)存,小于這個(gè)性能值的計(jì)算機(jī)運(yùn)行C++時(shí)的性能會(huì)高于運(yùn)行Java時(shí)的性能,大于這個(gè)值的話兩者的性能差距就很小了,甚至可以忽略。而且對(duì)于初級(jí)C++程序員很難寫出高效的程序,Java語言本身也利于寫出健壯的代碼,而C++要為諸如如何避免程序崩潰付出很多,總之swing能與VB等語言挑戰(zhàn),很大程度得意于Java本身。

    至于SWT,我僅列舉2點(diǎn)最致命的弱點(diǎn)就足矣另SWT在Swing之下了。第一,SWT組件不是Java Bean,從構(gòu)造函數(shù)可以看出必須要指定一個(gè)父組件,而這個(gè)限制對(duì)于實(shí)現(xiàn)模塊間的松偶合是很不利的。第二,SWT不支持皮膚。
    SWT中的Draw2D我了解的不多,但是見IBM官方說性能還不是很好,究其原因可能也是采用非本地調(diào)用組件,直接繪制造成的吧,和swing差不多了,但是這樣一來SWT在打造外觀來說可能會(huì)是個(gè)不小的進(jìn)步。 至于IBM會(huì)不會(huì)將SWT提高規(guī)模,我看關(guān)鍵是有外界刺激,如果Swing變得很強(qiáng)大,那么IBM應(yīng)該不會(huì)坐以待斃吧。你說的JFileChooser確實(shí)是swing的一大缺點(diǎn),看Sun怎么看了,沒準(zhǔn)JDK1.7會(huì)有所改觀呢:)。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 00:15 Lf0x

    一向?qū)?Swing GUI 很感興趣, 希望樓主多多分享一下開發(fā)經(jīng)驗(yàn),^_^...  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 00:22 sun_java_studio@yahoo.com.cn(電玩)

    @Lf0x
    由于工作以來,GUI開發(fā)大多都是基于SWT,所以前幾篇文章多是SWT為主。后面的貼逐漸會(huì)轉(zhuǎn)到Swing。但是九宮圖屬于設(shè)計(jì)范疇,與如何實(shí)現(xiàn)沒太大聯(lián)系,其實(shí)網(wǎng)頁設(shè)計(jì)中的JavaScript里也經(jīng)常用到類似的技術(shù)。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 11:46 zhrb

    感覺挺不錯(cuò)的
    不過swt也可以跨平臺(tái)嗎?
    印象中好像只有swing可以跨平臺(tái)  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 11:49 sun_java_studio@yahoo.com.cn(電玩)

    @歡樂豬
    對(duì)于大多數(shù)標(biāo)準(zhǔn)外觀應(yīng)用,用Swing確實(shí)有點(diǎn)小題大做。SWT的特點(diǎn)就是簡(jiǎn)單,簡(jiǎn)單包含使用簡(jiǎn)單和外觀簡(jiǎn)單兩層含義,這也就決定了SWT并不會(huì)在短時(shí)期內(nèi)消亡,何況它有Eclipse撐腰。但是即使用SWT,上述Demo,大多數(shù)是自定義組件,原因很簡(jiǎn)單,就是原生組件不好看。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 11:54 sun_java_studio@yahoo.com.cn(電玩)

    @zhrb
    SWT能跨平臺(tái),但是我不敢保證效果很好,據(jù)說SWT在Linux上bug很多。SWT要實(shí)現(xiàn)跨平臺(tái),可能要考慮更多東西,必須OLE可能就不兼容。能否支持某一平臺(tái)看一看能否在那平臺(tái)上運(yùn)行Eclipse就行了。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 11:58 BeanSoft

    SWT 是快是慢就不說了. 可是 Eclipse 自打2.1.3之后占用內(nèi)存直線上升, 各位高人有沒有什么內(nèi)幕告訴啊? 做項(xiàng)目的時(shí)候 Eclipse 2.1.3 的內(nèi)存很少超過100MB, 但是 Eclipse 3.0, 3.1, 3.2, 3.3, 天啊, 內(nèi)存占用直線上升. 至少說明一個(gè)問題: Eclipse 追求界面漂亮導(dǎo)致的就是程序的變慢和消耗資源.  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 12:09 sun_java_studio@yahoo.com.cn(電玩)

    @歡樂豬
    “如果是重載paint(Graphics),從零開始自己畫控件和處理事件,那么SWT和Swing是沒有區(qū)別的”。如果是真的,當(dāng)初的項(xiàng)目就不會(huì)那么費(fèi)事了,SWT的addPaintListener是無法將組件繪制成半透明效果的。而swing通過重寫paintComponent并去掉super.paintComponent。然后利用Graphics2D可輕松實(shí)現(xiàn)。
    總之,SWT實(shí)現(xiàn)專業(yè)外觀不合適,Swing是用來打造專業(yè)外觀的組件庫,我們開發(fā)的產(chǎn)品是IM即時(shí)通訊類終端,沒有專業(yè)外觀行么。Eclipse RCP看起來像Eclipse,如果客戶接受那套外觀,Eclipse RCP無疑是最適合的。
    再有SWT不是Java Bean,這個(gè)是很致命的。項(xiàng)目中被搞得很無奈,因此后來項(xiàng)目組決定放棄Eclipse RCP重新寫一套Framework。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 12:11 sun_java_studio@yahoo.com.cn(電玩)

    @BeanSoft
    不僅Eclipse,netBeans、JBuilder哪個(gè)不是啊。Eclipse的慢不應(yīng)該是界面導(dǎo)致。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-04 12:18 sun_java_studio@yahoo.com.cn(電玩)

    給各位推薦一個(gè)博客,http://blog.sina.com.cn/swingjava。作者是Sun工程研究院的員工,對(duì)swing開發(fā)造詣非淺,他的觀點(diǎn)是很有說服力的,有關(guān)帖子發(fā)表在07年3月,希望不要在SWT、Swing之間再有什么爭(zhēng)執(zhí)了。

    我的觀點(diǎn)是SWT適合大多數(shù)客戶的需求,Swing更適合打造專業(yè)外觀,高手更傾向于swing。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-05 08:53 zht

    都是高手。。。
      回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-05 13:35 sun_java_studio@yahoo.com.cn(電玩)

    @歡樂豬
    那個(gè)Framework是中間件,因?yàn)閷?duì)RCP程序強(qiáng)制實(shí)現(xiàn)SWT很不欣賞,由于SWT強(qiáng)制父組件的構(gòu)造方法不容易使UI與業(yè)務(wù)分離,原因就是這樣。
    使用Eclipse RCP創(chuàng)建的應(yīng)用外觀像Eclipse,JFace倡導(dǎo)Action生成ToolBar Button和MenuItem,這樣外觀是改不了的,如果硬要這樣也有變態(tài)的改法。netBeans RCP亦是如此。

    我最近除了寫帖還學(xué)習(xí)Equinox,打算以這個(gè)作為Framework,界面完全自己控制。

    聽說話語氣您是不是IBM的人呀,對(duì)SWT那么有自信?  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-11-05 19:04 歡樂豬

    @sun_java_studio@yahoo.com.cn(電玩)

    >>>由于SWT強(qiáng)制父組件的構(gòu)造方法不容易使UI與業(yè)務(wù)分離。
    ------------------------------------------------------------
    相對(duì)來講,你是對(duì)的。只要有約束,就會(huì)增加耦合度。 但是, 這不是
    致命的,JFace里Viewer不就是很好的分離了業(yè)務(wù)嗎? 還有Eclipse
    中到處都是Adapter對(duì)分離業(yè)務(wù)也是一種靈活,有效的方式。
    只不過,這兩都不是用繼承的方式,而是采用Composition的方式。
    有的人可能不習(xí)慣。但是Composition是比繼承更安全的一種復(fù)用。

    你的DemoShell繼承了Shell。一般Eclipse中的做法會(huì)包含一個(gè)Shell,
    就像TreeViewer之于Tree一樣。當(dāng)然一個(gè)明顯的缺點(diǎn)是,DemoShell
    就不能替代Shell。所以Eclipse很強(qiáng)調(diào)面向interface。這要講起來就長(zhǎng),
    就不說了。

    >>>界面完全自己控制
    其實(shí)你不用從Equinox開始, Equinox是一個(gè)Runtime,實(shí)現(xiàn)了Plugin的
    機(jī)制。完全可以用RCP, 你的Application里不要那些Advisor,自己?jiǎn)?dòng)
    SWT的事件循環(huán)。這樣,你得到的就是一個(gè)Native的Shell,如果你連這個(gè)
    Shell都不滿意,就用Shell(NO_TRIM), 定義Region,相應(yīng)事件。你想要
    什么樣的效果, 就可以做到什么樣的。只要你不怕麻煩。我覺得,只要你畫
    的出來(比如用Photoshop), 就能實(shí)現(xiàn)的了。

    Swing也好,SWT也好,界面編程,我更加看好像.net3.0的MXML和Flex的
    那個(gè)什么XML,更加declarative. 已經(jīng)有人基于SWT做了這方面的工作。

    我不是IBM的,工作中還是用Swing的多。

    出于對(duì)Eclipse的興趣和欣賞,才去研究SWT,以及和Eclipse相關(guān)的東西。
    也就是從今年3月份開始的,之前只是用Eclipse開發(fā)而已。我不光對(duì)SWT有
    信心,對(duì)Swing也很有信心。主要是對(duì)Java有信心。和.net不同,Java
    世界里往往有多種選擇,相互刺激,相互學(xué)習(xí),共同進(jìn)步。當(dāng)然對(duì)什么都
    正不明白的人來說,太多選擇也是壞事,沒得選就不會(huì)錯(cuò)了嘛。
      回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-12-03 09:24 zhou zhi meng

    樓主,您好,看了您用Java開發(fā)的界面截圖,正是太棒了,您能不能發(fā)份源代碼給俺,感激不盡!
    俺的郵箱:zzmccnu@163.com  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-12-04 10:14 sun_java_studio@yahoo.com.cn(電玩)

    @zhou zhi meng
    抱歉,以上若干IM軟件UI都是有版權(quán)的,源碼不能公開,包括程序用到的圖片。我能做到的就是將截圖展示出來,但是前面的一些有關(guān)自定義組件的文章,包括本文已經(jīng)將大部分實(shí)現(xiàn)介紹了,只不過刪減了部分代碼健壯性細(xì)節(jié)。
    后續(xù)還會(huì)有相關(guān)文章。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2007-12-31 10:36 wǒ愛伱--咾婆

    支持...樓主啊...好東東..看得我心里個(gè)激動(dòng)?。?nbsp; 回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-01-18 16:14 QQ:244943080

    樓主 .. 我找啦好久 終于找到啦  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-08-06 19:45 Ice Mark

    Java在界面設(shè)計(jì)方面一直抬不起頭,早就想為java出口氣了.  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-08-07 09:25 sun_java_studio@yahoo.com.cn(電玩)

    @Ice Mark
    前些日子和Willim chen見了次面,談到了Swing何時(shí)翻身,他作了這么一個(gè)比喻:著名畫家凡高,在世的時(shí)候作品一文不值,等他過世很長(zhǎng)時(shí)間年人們才注意到。原因就是凡高的畫風(fēng)和當(dāng)時(shí)時(shí)代的現(xiàn)實(shí)主義很不融合。凡高的畫很超前,用現(xiàn)在的話說就是前衛(wèi),而當(dāng)時(shí)美術(shù)界被達(dá)芬奇等現(xiàn)實(shí)派所壟斷,所以凡高在當(dāng)時(shí)就是懷才不遇、不合時(shí)宜,結(jié)果下場(chǎng)就是瘋掉、自殺。
    這和Swing很類似,Sun公司于1997年Java One大會(huì)上公布了Swing和Java2D圖形組件,在當(dāng)時(shí)來說是極其超前的。首先當(dāng)時(shí)的用戶電腦性能、計(jì)算能力、JVM性能都不高,Swing這種畫出來的非本地組件會(huì)執(zhí)行更多的指令來達(dá)到渲染、展現(xiàn),這是性能方面;其二,Swing默認(rèn)L&F是很丑陋,尤其在早期的JVM中更是如此,如果把Swing做得漂亮一點(diǎn)是需要成本的,而且還會(huì)另當(dāng)時(shí)本來就不快的Swing更慢,當(dāng)時(shí)Windows 95、98用戶習(xí)慣了Windows風(fēng)格,用VB簡(jiǎn)單的拖拽就可方便的編寫出比較美觀的Windows界面,而VB的組件庫比Swing標(biāo)準(zhǔn)組件豐富得多,即使Swing可以跨平臺(tái),但是和Windows的壟斷比起來還是差遠(yuǎn)了。
    不是Swing不好,只是時(shí)機(jī)未到。如今互聯(lián)網(wǎng)的速度、計(jì)算機(jī)的性能早已不是當(dāng)時(shí)的情況,所以RIA時(shí)代來了,Linux、OpenSolaris用戶群多了,瀏覽器比再是IE一家獨(dú)占了,VB時(shí)代已去。Sun從未放棄過桌面,JavaFX SDK Preview發(fā)布了,Swing該翻身了。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-09-01 21:20 Hunking 土著人

    向樓主學(xué)了兩招,花了兩天時(shí)間實(shí)現(xiàn)了這兩個(gè)布局管理器

    y = a*x + b 和 九宮布局

    不錯(cuò),算是真正的理解了布局管理器
    謝謝樓主  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-09-06 21:38 flame

    作為一個(gè)學(xué)生,我平時(shí)喜歡上網(wǎng)查找一些相關(guān)的編程技術(shù),但是像作者這樣懂技術(shù),有成果,又肯不惜賜教的人真的不多,希望能學(xué)到作者的更多的編程經(jīng)驗(yàn).  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-10-28 12:06 sjzs1190@qq.com

    強(qiáng)人
    很想知道,九宮格的原理是你想出來的還是參考別人的。有沒有類似的書籍看看呢。
      回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-10-29 22:59 sun_java_studio@yahoo.com.cn(電玩)

    @sjzs1190@qq.com
    利用九宮圖實(shí)現(xiàn)專業(yè)外觀早就有了,在Flex中已經(jīng)是官方解決方案了,在VB時(shí)代就有人用,就是很多人不知道而已。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-11-07 11:43 游客

    樓主能不能用swing實(shí)現(xiàn)一個(gè)優(yōu)美的界面,最好包括的東西全面寫。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-11-09 14:22 sun_java_studio@yahoo.com.cn(電玩)

    @游客
    《FilthyRichClients》看完一遍了,特別是動(dòng)畫和效果的部分,感覺借助TimingFramework和AnimatedTransitions作出漂亮非常之簡(jiǎn)單,也有把書中提到的假想圖實(shí)現(xiàn)一遍的想法,等有時(shí)間吧。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2008-11-20 09:02 952679745

    swing和swt在性能上的感覺就好象netbeans6.0和eclipse一樣,只不過現(xiàn)在的3。4版本確實(shí)差很多。不過整體上速度要比netbeans快很多

    啥時(shí)候翻身,不知道啊?,F(xiàn)在在越多的開發(fā)中發(fā)現(xiàn)一個(gè)java程序,jvm,數(shù)據(jù)庫下來都一百多M,哎,太糟糕了,打算回到原始部落吧  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-01-07 00:31 shukae

    九宮格方法很簡(jiǎn)單,只是UI入門小技巧


    >> @zhrb
    >> SWT能跨平臺(tái),但是我不敢保證效果很好,據(jù)說SWT在Linux上bug很多。
    Swing和SWT在Linux都跑得很好好嗎!不要在人云亦云了!

    >>@歡樂豬
    >>SWT實(shí)現(xiàn)專業(yè)外觀不合適,Swing是用來打造專業(yè)外觀的組件庫,我們開發(fā)的產(chǎn)品是IM即時(shí)通訊類終端,沒有專業(yè)外觀行么
    用SWT就寫不出專業(yè)外觀,那是你的問題
    因?yàn)槲以诠揪陀肧wing和SWT寫出一模一樣的AP
    UI遠(yuǎn)遠(yuǎn)比你的AP複雜,對(duì)於畫面親切更加要求
      回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-01-07 17:22 風(fēng)過

    但是我一直有個(gè)問題。。。
    當(dāng)MS提出了毛玻璃效果之后,java如何實(shí)現(xiàn),我一直困擾于此
    如果我想寫一套真正的透明組件,如何實(shí)現(xiàn)?  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-01-08 11:30 sun_java_studio@yahoo.com.cn(電玩)

    @風(fēng)過
    《Java動(dòng)畫、圖形和極富客戶端效果開發(fā)》該有的都有了。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-06-29 13:54 希望的石頭

    Java的速度仍然不盡人意。大俠能否指點(diǎn)一下,如何將Java編譯成本地代碼??  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-07-23 12:25 發(fā)到

    寫的很不錯(cuò) 能否把這幾幅圖的demo程序給我發(fā)一下嗎?謝謝 郵箱shijiyu00@sohu.com  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-08-31 13:23 freeman

    你的九宮格有些牽強(qiáng),可以有更優(yōu)雅,更符合習(xí)慣的方法解決布局!  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2009-08-31 13:31 sun_java_studio@yahoo.com.cn(電玩)

    @freeman
    九宮格算是一種解決辦法,不局限于語言。
    像FlexBuilder就支持這種布局,說明Flex早就開始采納了。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖[未登錄] 2010-03-24 16:43 ethan

    請(qǐng)問你是怎么對(duì)Swing中標(biāo)題欄操作的,我好像去不掉標(biāo)題欄啊  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2010-03-26 18:26 電玩

    @ethan
    標(biāo)題是畫上去的,或者干脆就是一副圖片。  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2010-06-13 16:40 路過

    樓主的想法和Sun官方的想法是一致的
    Sun在這方面已經(jīng)做得很好了,大家有興趣可以看一下
    高級(jí)Synth
    http://www.ibm.com/developerworks/cn/java/j-synth/  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2010-06-13 18:02 sun_java_studio@yahoo.com.cn(電玩)

    @freeman
    謝謝評(píng)論,那篇文章早就看過了,現(xiàn)在的趨勢(shì)是整個(gè)桌面應(yīng)用正逐漸被Web和Mobile替代。美麗的外觀不是Swing做不到也不是Java做不到,而是大部分用戶已不關(guān)注PC桌面了。Java客戶端將在Android和Google下延續(xù)  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2012-07-31 23:31 chenzhihui

    你好,請(qǐng)問下博主有沒有聊天工具的ui源碼呢?
    現(xiàn)因?yàn)橐鲆粋€(gè)開源的webqq客戶端,要使用聊天ui,對(duì)于美工方面資源有點(diǎn)少,是否可以提供些呢?
    我的郵箱: 6208317@qq.com  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2012-08-22 11:24 sun_java_studio@yahoo.com.cn(電玩)

    @chenzhihui
    06年的項(xiàng)目,源碼我沒有留。
    iQQ開源是你發(fā)起的嗎?  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2012-11-17 21:32 chenyu

    能請(qǐng)教下 你圖中的table比swt table漂亮多了,是怎么做的  回復(fù)  更多評(píng)論   

    # re: 打造專業(yè)外觀-九宮圖 2012-11-19 14:44 sun_java_studio@yahoo.com.cn(電玩)

    @chenyu
    上述那個(gè)table嗎?貌似是沒渲染,就普通的SWT table??赡芪耶?dāng)時(shí)對(duì)表頭做處理了吧。06年的代碼,忘了:<  回復(fù)  更多評(píng)論   

    TWaver中文社區(qū)
    主站蜘蛛池模板: 国产成人精品日本亚洲专区61| 永久免费不卡在线观看黄网站 | 日韩插啊免费视频在线观看 | 亚洲国产日韩精品| 亚洲av永久综合在线观看尤物| 亚洲欧洲日本精品| 亚洲乱码中文字幕小综合| 亚洲国产精品日韩在线观看| 亚洲精品在线电影| 亚洲卡一卡2卡三卡4麻豆| 亚洲制服丝袜第一页| 国产精品亚洲片夜色在线| 亚洲精品无码av片| 国产亚洲精品美女| 一级视频在线免费观看| 抽搐一进一出gif免费视频| 免费观看一区二区三区| 免费无码中文字幕A级毛片| 3344永久在线观看视频免费首页 | a毛片在线看片免费| 四虎影视成人永久免费观看视频 | 999久久久免费精品播放| 免费能直接在线观看黄的视频| 久久笫一福利免费导航| 成人免费午间影院在线观看| 国产成人免费a在线资源| 国产自偷亚洲精品页65页| 亚洲AV美女一区二区三区| 亚洲国产中文在线视频| 亚洲欧洲av综合色无码| 一级女性全黄生活片免费看| a级毛片在线免费| 很黄很色很刺激的视频免费| 四虎永久在线精品免费观看地址 | 免费乱码中文字幕网站| 亚洲热妇无码AV在线播放| 亚洲欧洲国产视频| 另类小说亚洲色图| 嫩草在线视频www免费观看| 午夜性色一区二区三区免费不卡视频| 免费黄色一级毛片|