Java桌面技術(shù)

          Java Desktop Technology

          常用鏈接

          統(tǒng)計

          友情連接

          最新評論

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

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

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

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







              
              



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


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

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

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

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

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

          評論

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

          樓主太強大了。拜一個。
          由于是Linux程序員出身,對GUI程序的設(shè)計一竅不通。最近正在自學(xué),樓主給點建議罷。我覺得GUI程序如果真要自己寫的話,太費時間了。可是用可視工具畫的話,又感覺不理解原理,心里沒有底氣。  回復(fù)  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          @歡樂豬
          那個Framework是中間件,因為對RCP程序強制實現(xiàn)SWT很不欣賞,由于SWT強制父組件的構(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,打算以這個作為Framework,界面完全自己控制。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          支持...樓主啊...好東東..看得我心里個激動啊!  回復(fù)  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          九宮格方法很簡單,只是UI入門小技巧


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          你好,請問下博主有沒有聊天工具的ui源碼呢?
          現(xiàn)因為要做一個開源的webqq客戶端,要使用聊天ui,對于美工方面資源有點少,是否可以提供些呢?
          我的郵箱: 6208317@qq.com  回復(fù)  更多評論   

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

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

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

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

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

          @chenyu
          上述那個table嗎?貌似是沒渲染,就普通的SWT table。可能我當(dāng)時對表頭做處理了吧。06年的代碼,忘了:<  回復(fù)  更多評論   

          TWaver中文社區(qū)
          主站蜘蛛池模板: 军事| 英超| 于田县| 财经| 渝北区| 神木县| 调兵山市| 苗栗县| 安新县| 龙口市| 吉水县| 江油市| 麻城市| 永寿县| 双流县| 乐东| 防城港市| 内丘县| 丁青县| 昂仁县| 句容市| 长春市| 永顺县| 芜湖县| 黔江区| 青川县| 静海县| 崇州市| 永靖县| 中江县| 扎囊县| 桦南县| 景德镇市| 托克托县| 长兴县| 郓城县| 永丰县| 揭西县| 全椒县| 塔城市| 紫阳县|