re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 12:11
@BeanSoft
不僅Eclipse,netBeans、JBuilder哪個(gè)不是啊。Eclipse的慢不應(yīng)該是界面導(dǎo)致。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 12:09
@歡樂豬
“如果是重載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。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 11:54
@zhrb
SWT能跨平臺(tái),但是我不敢保證效果很好,據(jù)說SWT在Linux上bug很多。SWT要實(shí)現(xiàn)跨平臺(tái),可能要考慮更多東西,必須OLE可能就不兼容。能否支持某一平臺(tái)看一看能否在那平臺(tái)上運(yùn)行Eclipse就行了。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 11:49
@歡樂豬
對于大多數(shù)標(biāo)準(zhǔn)外觀應(yīng)用,用Swing確實(shí)有點(diǎn)小題大做。SWT的特點(diǎn)就是簡單,簡單包含使用簡單和外觀簡單兩層含義,這也就決定了SWT并不會(huì)在短時(shí)期內(nèi)消亡,何況它有Eclipse撐腰。但是即使用SWT,上述Demo,大多數(shù)是自定義組件,原因很簡單,就是原生組件不好看。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 00:22
@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ù)。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-04 00:12
@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)勢。
至于Java性能的問題,我剛派到BEA工作時(shí)針對終端為什么采用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è)值的話兩者的性能差距就很小了,甚至可以忽略。而且對于初級(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è)限制對于實(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ì)有所改觀呢:)。
re: 打造專業(yè)外觀-九宮圖 sun_java_studio@yahoo.com.cn(電玩) 2007-11-03 23:07
@eddie
初學(xué)JavaGUI,最好買一本專門介紹swing的書,O'REILLY系列的swing第二版就不錯(cuò),封面是猴子的那本。如果你想深入了解桌面開發(fā),不要一上來就學(xué)SWT,除非工作需要,如果熟悉swing的話翻回來看SWT是毫不費(fèi)力的。切記的一點(diǎn)是,初學(xué)Java GUI不要用任何可視化工具,道理就像沒學(xué)會(huì)走路就想飛一樣。
re: SWT自定義組件之Slider sun_java_studio@yahoo.com.cn(電玩) 2007-10-30 22:25
@Matthew Chen
虛擬滑塊的圖片本來就是圓角矩形,輪廓是用虛線勾出來的,你替換其他圖片試試,不應(yīng)該是程序的原因。
re: SWT自定義組件之Slider sun_java_studio@yahoo.com.cn(電玩) 2007-10-30 15:51
@Matthew Chen
大可不必調(diào)用redraw(tempLocation, 0, TEMP_H.getBounds().width,TEMP_H.getBounds().height, false)兩次。
開始我也是這么寫的,后來改進(jìn)只在tempLocation賦值后調(diào)用,我運(yùn)行程序的時(shí)候沒發(fā)現(xiàn)邊緣缺失的現(xiàn)象。
re: SWT自定義組件之Slider sun_java_studio@yahoo.com.cn(電玩) 2007-10-30 15:47
@Matthew Chen
paintControl方法作用的是整個(gè)圖形區(qū)域,也就是說畫是整個(gè)區(qū)域的重畫,但是擦除如果是整個(gè)區(qū)域擦除的話那屏幕就會(huì)閃了,你可以將redraw(tempLocation, 0, TEMP_H.getBounds().width,TEMP_H.getBounds().height, false); 這行代碼理解為“擦除”,擦除原來區(qū)域的圖像(在執(zhí)行擦除前,原來區(qū)域的區(qū)域的圖像是舊虛擬滑塊,等到操作系統(tǒng)執(zhí)行繪制時(shí),那部分區(qū)域已不是虛擬滑塊了),新的temp thumb繪制是在paintControl方法完成的。
畫是整個(gè)區(qū)域的重畫,擦是部分部分被擦。
re: netBeans6.0咸魚翻身與Swing稱霸桌面應(yīng)用 sun_java_studio@yahoo.com.cn(電玩) 2007-10-27 17:00
@zongxing
同意“真正的高手做開發(fā)時(shí)還是用swing的”這種說法,但是很少有桌面軟件對外觀要求得很嚴(yán)格,SWT能滿足大多數(shù)客戶。
SWT和Swing共存,不然Swing和誰競爭去?
re: netBeans6.0咸魚翻身與Swing稱霸桌面應(yīng)用 sun_java_studio@yahoo.com.cn(電玩) 2007-10-26 17:37
據(jù)可靠消息,VB Delph的程序員極具減少,我想Java之所以在桌面開發(fā)不樂觀是和中國人懶得安裝JVM有很大關(guān)系,如果JVM向IE一樣普及,swing借助跨平臺(tái)在桌面打到VB只是時(shí)間的問題。
re: netBeans6.0咸魚翻身與Swing稱霸桌面應(yīng)用 sun_java_studio@yahoo.com.cn(電玩) 2007-10-26 17:32
@cnodin
如果滿足于Windows默認(rèn)改觀,那么SWT可能適合你,但是swing支持自定義外觀,利用swing可以將界面做得很酷,這一點(diǎn)SWT是做不到的。
@Matthew Chen
我曾經(jīng)負(fù)責(zé)過Java前臺(tái)的開發(fā),Swing,SWT都用過。