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

        對(duì)于一般界面需求而言,簡(jiǎn)單的桌面組件完全可以滿足用戶的需求,這些簡(jiǎn)單至極的組件已經(jīng)被集成進(jìn)組件托盤中了,如果你用netbeans或者安裝Eclipse的VE插件,完全可以只通過(guò)托拽的方式將組件生成并放置在指定的地方。至多需要你對(duì)常用布局管理器有少許了解。但是單憑這些現(xiàn)有的玩意很難打造出專業(yè)的外觀。比如一個(gè)頂層窗口,如果你用swing組件庫(kù)中的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è)窗口來(lái)說(shuō),如下圖:

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







        
        



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


    九宮格的設(shè)計(jì)思想是將組件分成9個(gè)組成部分,四個(gè)邊、四個(gè)角、中心部分作為內(nèi)容放置其他組件。為了敘述方便,這9個(gè)部分依次取名為northwest(左上)、northeast(右上)、north(北)、southwest(左下)、southeast(右下)、south(南)、west(西)、east(東)、content(中心內(nèi)容窗格)。
    這9個(gè)部分的布局不難理解,例如northwest始終位于左上,無(wú)論窗口大小如何變動(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,也就是說(shuō)這樣的頂層窗口沒(méi)有標(biāo)題欄和邊框,一些由你來(lái)修飾。如果你用Swing,請(qǐng)使用JWindow而不是JFrame,道理同上。
        雖然上述實(shí)現(xiàn)界面程序是用SWT編寫的,但是不代表SWT很強(qiáng)大,Swing才是王者,你可以這樣理解,SWT這樣的怪胎都能做出如此效果,Swing更沒(méi)問(wèn)題了。
        參考程序這里下載

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

        至于上面所說(shuō)UI代碼一行一行寫出來(lái),是有些費(fèi)事,對(duì)于這個(gè)問(wèn)題我的看法是這樣的:某些界面是不需要花大力氣渲染的,比如說(shuō)配置界面,沒(méi)有哪些客戶端要求那種界面也強(qiáng)調(diào)很酷的外觀,所以對(duì)于簡(jiǎn)單的界面,可以借助工具生成代碼,必定工具還是可以幫你做50%的事情。第二就積累一些組件庫(kù),比如自定義一些可重用組件,就像前面介紹的ComboBox和Slider,如果不能完全重用,至少可以將代碼作為模板,少許改動(dòng)就可變成另一套外觀風(fēng)格,研讀前面介紹的ComboBox和Slider你會(huì)發(fā)現(xiàn)替換里面的圖片或顏色常量就可輕松換膚,如果你的UI是基于swing的,那么你可以自定義L&F來(lái)實(shí)現(xiàn)基本的外觀,關(guān)于L&F后面定會(huì)花大量時(shí)間整理出完整教程。第三就是利用配置的方式將UI組件的生成和布局從.java中移出來(lái),這樣不僅可以省去大部分代碼量,而且配置文件簡(jiǎn)短易讀的特點(diǎn)是眾所周知的,Java Web項(xiàng)目的web.xml就是很好的例子,Spring就更不用說(shuō)了。配置方式后面也會(huì)介紹。第四點(diǎn),如果你只會(huì)VB、VC那種拖拽式開(kāi)發(fā),那你永遠(yuǎn)算不上高手,我曾經(jīng)用MFC寫程序時(shí)抱怨過(guò)“有那么多按鈕卻看不見(jiàn)一行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也開(kāi)始向桌面進(jìn)軍,JDK1.6的進(jìn)步就能很好地說(shuō)明這一點(diǎn),更另人興奮的是Java桌面技術(shù)有添加了一個(gè)新成員——JavaFX,又有好消息稱JDK7.0中的AWT將加入不規(guī)則窗體和半透明窗體的支持,希望有一天Swing能壟斷桌面。

    posted on 2007-11-03 17:56 sun_java_studio@yahoo.com.cn(電玩) 閱讀(18208) 評(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)建議罷。我覺(jué)得GUI程序如果真要自己寫的話,太費(fèi)時(shí)間了。可是用可視工具畫(huà)的話,又感覺(jué)不理解原理,心里沒(méi)有底氣。  回復(fù)  更多評(píng)論   

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

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

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

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

    看樓主的文章,一時(shí)豁然開(kāi)朗,gui原來(lái)可以是這樣的,以前也下載過(guò)很多軟件,最近才慢慢開(kāi)始注意界面布局的特點(diǎn)和提供用戶體驗(yàn)方面的東西,感覺(jué)歐美軟件逐漸在界面上追求簡(jiǎn)單和易用,ComponentListener的思想有時(shí)比布局管理器容易和適合開(kāi)發(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)行速率,但是否語(yǔ)言級(jí)別和平臺(tái)級(jí)別的一些瓶頸會(huì)成為它開(kāi)發(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)上也不例外(希望我沒(méi)理解錯(cuò)),這在實(shí)現(xiàn)很多算法上并不理想,不知樓主的意見(jiàn)如何?
    說(shuō)到swt,我也先學(xué)了點(diǎn)swing再來(lái)學(xué)的,如果有說(shuō)的不對(duì)的請(qǐng)指出,除了無(wú)法獲得jdk的標(biāo)準(zhǔn)集成支持外,swt可以說(shuō)在各個(gè)方面都勝過(guò)awt,之所以說(shuō)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是繪制一切無(wú)所不能的;swt是強(qiáng)的,而在其之上作為補(bǔ)充的純繪制api也能成為其補(bǔ)充,在我看swt的介紹時(shí)看到這一句,對(duì)平臺(tái)缺失的組件用Java繪制,這種繪制指的其實(shí)是用平臺(tái)已有的swt組件進(jìn)行組合獲得復(fù)合控件,我看過(guò)eclipse Nebular項(xiàng)目,主要的自定義控件思想也是這樣的,它一方面基于高效的本地控件來(lái)復(fù)合,同時(shí)也可能引入本地控件的問(wèn)題。但是就現(xiàn)階段來(lái)說(shuō),sun對(duì)swing的支持還未全面鋪開(kāi)到最關(guān)系用戶切身體驗(yàn)的范圍,舉我上次評(píng)論說(shuō)過(guò)的JFileChooser,速度和awt是秒和毫秒的差距,當(dāng)然,這是可以通過(guò)編程手段來(lái)忽悠用戶的,比如開(kāi)個(gè)線程,在打開(kāi)的第一時(shí)間在后臺(tái)創(chuàng)建備用,就比如jdk demo中的swingset2的方式,但是,這比較讓人難以接受,我只為了提供一個(gè)讓用戶選擇路徑的控件,用完就扔掉的東西,卻不得不忍受全繪制界面帶來(lái)的時(shí)間延遲,真的很不值得。
    寫到這里,只感覺(jué)腦袋空空,好像成不了文章了,只是還是想和大家分享,希望有人能討論,希望想法沒(méi)有浪費(fèi)。  回復(fù)  更多評(píng)論   

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

    @eddie
    初學(xué)JavaGUI,最好買一本專門介紹swing的書(shū),O'REILLY系列的swing第二版就不錯(cuò),封面是猴子的那本。如果你想深入了解桌面開(kāi)發(fā),不要一上來(lái)就學(xué)SWT,除非工作需要,如果熟悉swing的話翻回來(lái)看SWT是毫不費(fèi)力的。切記的一點(diǎn)是,初學(xué)Java GUI不要用任何可視化工具,道理就像沒(méi)學(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等等”,只是我的希望,我覺(jué)得可行是第一,除C++,VB、Delphi的開(kāi)發(fā)者群會(huì)逐漸減少,而C++程序員不會(huì)把重點(diǎn)放在純粹的桌面開(kāi)發(fā),他們通常會(huì)借助VC++或C#那種拖拽工具來(lái)實(shí)現(xiàn),基于此就會(huì)導(dǎo)致第二個(gè)問(wèn)題。第二,Java的跨平臺(tái),這是得天獨(dú)厚的優(yōu)勢(shì)。
    至于Java性能的問(wèn)題,我剛派到BEA工作時(shí)針對(duì)終端為什么采用Java語(yǔ)言問(wèn)過(guò)技術(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語(yǔ)言本身也利于寫出健壯的代碼,而C++要為諸如如何避免程序崩潰付出很多,總之swing能與VB等語(yǔ)言挑戰(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我了解的不多,但是見(jiàn)IBM官方說(shuō)性能還不是很好,究其原因可能也是采用非本地調(diào)用組件,直接繪制造成的吧,和swing差不多了,但是這樣一來(lái)SWT在打造外觀來(lái)說(shuō)可能會(huì)是個(gè)不小的進(jìn)步。 至于IBM會(huì)不會(huì)將SWT提高規(guī)模,我看關(guān)鍵是有外界刺激,如果Swing變得很強(qiáng)大,那么IBM應(yīng)該不會(huì)坐以待斃吧。你說(shuō)的JFileChooser確實(shí)是swing的一大缺點(diǎn),看Sun怎么看了,沒(méi)準(zhǔn)JDK1.7會(huì)有所改觀呢:)。  回復(fù)  更多評(píng)論   

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

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

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

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

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

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

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

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

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

    @歡樂(lè)豬
    “如果是重載paint(Graphics),從零開(kāi)始自己畫(huà)控件和處理事件,那么SWT和Swing是沒(méi)有區(qū)別的”。如果是真的,當(dāng)初的項(xiàng)目就不會(huì)那么費(fèi)事了,SWT的addPaintListener是無(wú)法將組件繪制成半透明效果的。而swing通過(guò)重寫paintComponent并去掉super.paintComponent。然后利用Graphics2D可輕松實(shí)現(xiàn)。
    總之,SWT實(shí)現(xiàn)專業(yè)外觀不合適,Swing是用來(lái)打造專業(yè)外觀的組件庫(kù),我們開(kāi)發(fā)的產(chǎn)品是IM即時(shí)通訊類終端,沒(méi)有專業(yè)外觀行么。Eclipse RCP看起來(lái)像Eclipse,如果客戶接受那套外觀,Eclipse RCP無(wú)疑是最適合的。
    再有SWT不是Java Bean,這個(gè)是很致命的。項(xiàng)目中被搞得很無(wú)奈,因此后來(lái)項(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開(kāi)發(fā)造詣非淺,他的觀點(diǎn)是很有說(shuō)服力的,有關(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(電玩)

    @歡樂(lè)豬
    那個(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,界面完全自己控制。

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

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

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

    >>>由于SWT強(qiáng)制父組件的構(gòu)造方法不容易使UI與業(yè)務(wù)分離。
    ------------------------------------------------------------
    相對(duì)來(lái)講,你是對(duì)的。只要有約束,就會(huì)增加耦合度。 但是, 這不是
    致命的,JFace里Viewer不就是很好的分離了業(yè)務(wù)嗎? 還有Eclipse
    中到處都是Adapter對(duì)分離業(yè)務(wù)也是一種靈活,有效的方式。
    只不過(guò),這兩都不是用繼承的方式,而是采用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。這要講起來(lái)就長(zhǎng),
    就不說(shuō)了。

    >>>界面完全自己控制
    其實(shí)你不用從Equinox開(kāi)始, 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)事件。你想要
    什么樣的效果, 就可以做到什么樣的。只要你不怕麻煩。我覺(jué)得,只要你畫(huà)
    的出來(lái)(比如用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月份開(kāi)始的,之前只是用Eclipse開(kāi)發(fā)而已。我不光對(duì)SWT有
    信心,對(duì)Swing也很有信心。主要是對(duì)Java有信心。和.net不同,Java
    世界里往往有多種選擇,相互刺激,相互學(xué)習(xí),共同進(jìn)步。當(dāng)然對(duì)什么都
    正不明白的人來(lái)說(shuō),太多選擇也是壞事,沒(méi)得選就不會(huì)錯(cuò)了嘛。
      回復(fù)  更多評(píng)論   

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

    樓主,您好,看了您用Java開(kāi)發(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)的,源碼不能公開(kāi),包括程序用到的圖片。我能做到的就是將截圖展示出來(lái),但是前面的一些有關(guān)自定義組件的文章,包括本文已經(jīng)將大部分實(shí)現(xiàn)介紹了,只不過(guò)刪減了部分代碼健壯性細(xì)節(jié)。
    后續(xù)還會(huì)有相關(guān)文章。  回復(fù)  更多評(píng)論   

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

    支持...樓主啊...好東東..看得我心里個(gè)激動(dòng)啊!  回復(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見(jiàn)了次面,談到了Swing何時(shí)翻身,他作了這么一個(gè)比喻:著名畫(huà)家凡高,在世的時(shí)候作品一文不值,等他過(guò)世很長(zhǎng)時(shí)間年人們才注意到。原因就是凡高的畫(huà)風(fēng)和當(dāng)時(shí)時(shí)代的現(xiàn)實(shí)主義很不融合。凡高的畫(huà)很超前,用現(xiàn)在的話說(shuō)就是前衛(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í)來(lái)說(shuō)是極其超前的。首先當(dāng)時(shí)的用戶電腦性能、計(jì)算能力、JVM性能都不高,Swing這種畫(huà)出來(lái)的非本地組件會(huì)執(zhí)行更多的指令來(lái)達(dá)到渲染、展現(xiàn),這是性能方面;其二,Swing默認(rèn)L&F是很丑陋,尤其在早期的JVM中更是如此,如果把Swing做得漂亮一點(diǎn)是需要成本的,而且還會(huì)另當(dāng)時(shí)本來(lái)就不快的Swing更慢,當(dāng)時(shí)Windows 95、98用戶習(xí)慣了Windows風(fēng)格,用VB簡(jiǎn)單的拖拽就可方便的編寫出比較美觀的Windows界面,而VB的組件庫(kù)比Swing標(biāo)準(zhǔn)組件豐富得多,即使Swing可以跨平臺(tái),但是和Windows的壟斷比起來(lái)還是差遠(yuǎn)了。
    不是Swing不好,只是時(shí)機(jī)未到。如今互聯(lián)網(wǎng)的速度、計(jì)算機(jī)的性能早已不是當(dāng)時(shí)的情況,所以RIA時(shí)代來(lái)了,Linux、OpenSolaris用戶群多了,瀏覽器比再是IE一家獨(dú)占了,VB時(shí)代已去。Sun從未放棄過(guò)桌面,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)人
    很想知道,九宮格的原理是你想出來(lái)的還是參考別人的。有沒(méi)有類似的書(shū)籍看看呢。
      回復(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)畫(huà)和效果的部分,感覺(jué)借助TimingFramework和AnimatedTransitions作出漂亮非常之簡(jiǎn)單,也有把書(shū)中提到的假想圖實(shí)現(xiàn)一遍的想法,等有時(shí)間吧。  回復(fù)  更多評(píng)論   

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

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

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

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

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


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

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

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

    但是我一直有個(gè)問(wèn)題。。。
    當(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)過(guò)
    《Java動(dòng)畫(huà)、圖形和極富客戶端效果開(kāi)發(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
    九宮格算是一種解決辦法,不局限于語(yǔ)言。
    像FlexBuilder就支持這種布局,說(shuō)明Flex早就開(kāi)始采納了。  回復(fù)  更多評(píng)論   

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

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

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

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

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

    樓主的想法和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)論,那篇文章早就看過(guò)了,現(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)問(wèn)下博主有沒(méi)有聊天工具的ui源碼呢?
    現(xiàn)因?yàn)橐鲆粋€(gè)開(kāi)源的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)目,源碼我沒(méi)有留。
    iQQ開(kāi)源是你發(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嗎?貌似是沒(méi)渲染,就普通的SWT table。可能我當(dāng)時(shí)對(duì)表頭做處理了吧。06年的代碼,忘了:<  回復(fù)  更多評(píng)論   

    TWaver中文社區(qū)
    主站蜘蛛池模板: 久久久久亚洲精品无码网址色欲 | 久久er国产精品免费观看2| 国产一区视频在线免费观看| 精品亚洲国产成人| 成人免费午夜视频| 亚洲一卡2卡3卡4卡乱码 在线| 91免费播放人人爽人人快乐| 亚洲人和日本人jizz| 操美女视频免费网站| 亚洲av中文无码字幕色不卡| 国产美女做a免费视频软件| 国产亚洲成在线播放va| 亚洲伊人久久成综合人影院| 一级做性色a爰片久久毛片免费| 亚洲一区爱区精品无码| 男女午夜24式免费视频| 亚洲国产美女精品久久| 麻豆精品国产免费观看| 一级毛片不卡免费看老司机| 亚洲区小说区激情区图片区| 免费A级毛片无码A∨| 亚洲成_人网站图片| 亚洲成片观看四虎永久| 久久黄色免费网站| 亚洲高清中文字幕免费| 亚洲国产精品日韩| 精品无码AV无码免费专区| 一本色道久久综合亚洲精品蜜桃冫| 国产精品麻豆免费版| 中文毛片无遮挡高清免费| 亚洲国语在线视频手机在线| 国产在线观看www鲁啊鲁免费| 中文字幕永久免费| 精品亚洲AV无码一区二区| 亚洲欧洲自拍拍偷精品 美利坚 | 精品亚洲国产成人av| 亚洲线精品一区二区三区 | 四虎永久成人免费| 久草视频在线免费看| 亚洲AV无码AV吞精久久| 亚洲第一AV网站|