SwingDesigner
簡介:
SwingDesigner 是用Eclipse開發(fā)的 一款免費(fèi)的、開源的、功能上與Mattise Project相近的界面設(shè)計(jì)工具插件. 他可以簡化您開發(fā)應(yīng)用程序的步驟,縮短開Swing于VE(Eclipse的另一款插件),每個(gè)組件用一個(gè)getXXX返回,代碼可讀性很強(qiáng),而且開發(fā)者可以自由修改代碼,保存后保持和界面同步更新.Designer 發(fā)周期.它具有很多Mattise 所不具有的功能. 生成的代碼也沒有NetBeans 生成的代碼那樣復(fù)雜, 這個(gè)工具不需要form文件,生成的代碼也是類似
開發(fā)工具 : Eclipse3.4
JDK版本 : JDK 1.6 (NimbusLookAndFeel 需要JDK1.6 u10)或更高
開發(fā)平臺(tái) : Windows XP SP2
開發(fā)動(dòng)機(jī):(為什么是基于Eclipse的SwingDesigner?)
一直以來非常喜歡Swing,對Swing的研究也有很長一段時(shí)間了,一直希望Swing在Java桌面開發(fā)中扮演重要的角色。但是很久以來Java桌面開發(fā)始終是個(gè)弱項(xiàng),其中很大一部分原因是缺乏比較好用的界面設(shè)計(jì)工具。
NetBeans的界面設(shè)計(jì)工具(以前叫Matisse Project)的出現(xiàn)給Java的Gui開發(fā)尤其是Swing開發(fā)帶來了希望,但遺憾的是當(dāng)前Java集成開發(fā)環(huán)境仍然是Eclipse的天下,據(jù)統(tǒng)計(jì),目前市場上至少2/3的份額是被eclipse占有。雖然netbeans已經(jīng)獲得長足的進(jìn)步,并進(jìn)一步吸引了更多的developer,但是由于歷史習(xí)慣和遺留系統(tǒng)等等問題,這個(gè)市場份額在最近幾年肯定還是eclipse的天下。
當(dāng)然eclipse也有很多很優(yōu)秀的界面工具插件,可惜的是免費(fèi)的插件其質(zhì)量難以與netbeans的匹敵,好用的插件又都是收費(fèi)的。因此一直想為eclipse開發(fā)一款免費(fèi)的、開源的、功能上與Mattise Project相近的界面設(shè)計(jì)工具,算是為Swing的發(fā)展做一點(diǎn)貢獻(xiàn)。
從今年1月份開始,我來到一家新公司,主要做基于eclipse插件平臺(tái)的開發(fā),得以學(xué)習(xí)了eclipse的插件開發(fā)知識(shí)。以前曾經(jīng)使用 swing做過一個(gè)swing的界面設(shè)計(jì)工具,但由于是一款獨(dú)立的工具,沒有集成到任何IDE中,因此幾乎沒有實(shí)用價(jià)值。因此決定在閑暇時(shí)間將這個(gè)工具重新用eclipse插件技術(shù)進(jìn)行開發(fā)。
開發(fā)這款工具的目標(biāo)計(jì)劃:
1. 界面布局模仿Netbeans界面設(shè)計(jì)工具,操作和netbeans設(shè)計(jì)工具基本一模一樣,容易直觀的實(shí)現(xiàn)布局。這是第一目標(biāo)。目前已經(jīng)實(shí)現(xiàn)。
2. 代碼的生成和解析不需要輔助form文件,直接從源代碼文件進(jìn)行解析生成。生成代碼可讀性要強(qiáng),要可以編輯并且同步。目前已經(jīng)基本實(shí)現(xiàn),有些折中處理,采用約定代替配置的辦法提高代碼解析速度。
3. 直接支持樹和表的界面設(shè)計(jì),不需要寫代碼,直觀的采用界面操作,便可以直接生成表和樹的數(shù)據(jù)模型代碼。此功能已經(jīng)實(shí)現(xiàn)。而且目前的框架可以很容易擴(kuò)展,實(shí)現(xiàn)類似其他復(fù)雜組件的界面設(shè)計(jì)。
4. 工具的性能良好,界面設(shè)計(jì)功能流暢,代碼解析/生成速度快。目前來看,速度和性能還不錯(cuò),初步的打算是將速度放在最后處理優(yōu)化。
5.支持在設(shè)計(jì)時(shí)切換LookAndFeel,并能生成所設(shè)定LookAndFeel的代碼。這樣就能做到設(shè)計(jì)時(shí)和運(yùn)行時(shí)完全一致。而NetBeans的設(shè)計(jì)工具只能以NetBeans自身相同的LookAndFeel設(shè)計(jì),然后使用另外的LookAndFeel預(yù)覽。
6.更多的特性 將在以后的版本中添加.
代碼位置
http://code.google.com/p/visualswing4eclipse/
授權(quán)方式:
本工具使用的是LGPL授權(quán)方式。照顧商業(yè)利用和開源改進(jìn)而采用此授權(quán)。
目前支持的Eclipse平臺(tái)是3.4,JDK請使用1.6
聯(lián)系方式:
Msn : rehte @ hotmail . com
常見問題解答:
1、變量命名為什么是$nameLabel這樣的,是為了讀取方便么?
Re:這兒是netbeans form解析法和VE的AST語法數(shù)解析法的一個(gè)折中,提高解析速度,降低
解析復(fù)雜度,同時(shí)有拋棄了form文件的一個(gè)折中辦法,被設(shè)計(jì)的界面組件的field名稱需要以$作為識(shí)別,當(dāng)然這個(gè)$是可以替換的。目前還沒有做這一步。
2、方法名字為什么是changeBtn_action_actionPerformed這樣的,不符合java的規(guī)范,有配置可以改么?
Re:這個(gè)以后會(huì)增加配置進(jìn)行配置,但目前太多其他的細(xì)化工作要做,本人精力實(shí)在有限。
3、我這里用的英文版的eclipse3.4,改變變量時(shí),確認(rèn)和取消按鈕為亂碼,沒有國際化支持么?
Re:目前只是出于功能實(shí)現(xiàn)階段,國際化還沒有考慮,不過eclipse的國際化是很簡單的事情,打算把它作為最后階段解決的問題。
4、netbeans中雙擊button可以直接生成action調(diào)用方法,希望也提供這個(gè)功能。
Re:這個(gè)沒有問題。只不過這兒雙擊是調(diào)出in-place editor來實(shí)地編輯組件值。比如雙擊Table和tree能夠調(diào)出直接編輯表格和樹的設(shè)計(jì)器。
5、怎么沒有直接切換到代碼的視圖,還有到了代碼后我直接 運(yùn)行 怎么出來不了東西。。?
Re:目前不好用是因?yàn)楣δ苓€沒有完全完成。很正常,因此我把版本定在0.9.0,甚至應(yīng)該更低,但是目前大部分功能框架和實(shí)現(xiàn)已經(jīng)完成,缺少只是細(xì)化,所以我希望對于Swing和SWT以及Eclipse RCP開發(fā)功底比較深的人能夠加入進(jìn)來,幫助完善。
開發(fā)步驟:
1、新建一個(gè)Java工程
2、安裝插件以后,在New Class Wizard中可以發(fā)現(xiàn)一個(gè)Visual Swing Class,選擇該項(xiàng)以生成可視化JPanel,目前只支持JPanel,以后可以很容易擴(kuò)展,會(huì)有更多的支持。
初始化界面
目前完成的特性截圖:
下面是一個(gè)典型的設(shè)計(jì)界面的場景,紅框標(biāo)出的是該插件提供的視圖和按鈕,支持LookAndFeel切換:
這兒是拖拽組件時(shí)顯示布局提示,和netbeans的界面布局設(shè)計(jì)類似:
這是生成的源代碼,可以直接修改源代碼,保存后,會(huì)自動(dòng)同步的到設(shè)計(jì)界面上去:
這是一個(gè)表格的設(shè)計(jì)器,你可以直接在界面上拖拽,添加刪除編輯表格:
這是一個(gè)樹的設(shè)計(jì)器,你可以直觀的添加刪除編輯樹的節(jié)點(diǎn):
多LookAndFeel同時(shí)設(shè)計(jì)的抓圖,含有NimbusLookAndFeel
NimbusLookAndFeel顯得得體大方,字體也很好看,圖標(biāo)精致,組件顯得既圓潤而又不過分華麗。不知你注意沒有,新的Java2D的字體渲染是使用本地渲染庫渲染的,已經(jīng)完全和本地程序的字體一模一樣的。的確不錯(cuò):)