0.序言
還是老風(fēng)格,從頭寫(xiě)些基本的東西,幫助自己,也幫助正處于困惑中的別人。今天介紹的是Eclipse下的SWT的配置過(guò)程。自己前兩天要做個(gè)項(xiàng)目,配置了半天都不正確,后來(lái)慢慢總結(jié)了一下,不同環(huán)境配置的方法可能略有差別吧。
1.什么是SWT
用java的人一定都知道AWT和Swing,而SWT(Standard Widget
Toolkit)則是由Eclipse項(xiàng)目組織開(kāi)發(fā)的一套完整的圖形界面開(kāi)發(fā)包,雖然當(dāng)初僅僅是IBM為了編寫(xiě)Eclipse的IDE環(huán)境才編寫(xiě)的一套底
層圖形界面
API,但是隨著Eclipse的大范圍使用,人們也開(kāi)始對(duì)這套GUI開(kāi)發(fā)包做了深入的研究,并且不少人都開(kāi)始轉(zhuǎn)向SWT的使用。也許有人會(huì)問(wèn),既然有了
Swing,
那為什么還要SWT?答案很簡(jiǎn)單,因?yàn)槿藗兊睦砟畈煌WT的原理是根據(jù)運(yùn)行者的操作系統(tǒng)不同調(diào)用JNI來(lái)完成圖形界面的繪制的,如果你用的是
Windows,那么建立的窗口就是windows風(fēng)格的,還可以用XP的皮膚,如果是Linux或者M(jìn)acOS的話(huà),則在代碼不改變的情況下,繪制出相
應(yīng)風(fēng)格的界面。而Swing則是完全從底層開(kāi)始自己“手繪”界面的,這也就導(dǎo)致了速度比較慢和工人的“風(fēng)格詭異”的問(wèn)題。當(dāng)然,由于Sun的強(qiáng)大推動(dòng)力和
AWT/Swing的普及,很多人仍然在使用Swing作為首選的GUI開(kāi)發(fā)工具包。引用一句話(huà)做比喻:Swing就像Java決定不通過(guò)操作系統(tǒng)來(lái)實(shí)現(xiàn)
原生的IO,而是通過(guò)磁頭馬達(dá)API自己來(lái)讀磁盤(pán)的扇區(qū)。Swing基本上就是這樣的,它拿著個(gè)底層的“paint(Graphics)”方法,自己來(lái)繪
制所有的窗口組件。
2.下載與安裝
Eclipse本身就自帶了SWT的相關(guān)jar包,所以不用下載,除非你想看看SWT的源碼,當(dāng)然這對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是很有好處的。另外,如果不喜歡自己手
寫(xiě)GUI代碼的話(huà)就去下載一個(gè)可視化開(kāi)發(fā)插件吧,目前比較常用的是WindowBuilder Pro(原來(lái)的swt designer),http://www.instantiations.com/windowbuilderpro/左側(cè)點(diǎn)Download里面就可以下載,根據(jù)不同的Eclipse版本,選擇相應(yīng)的文件,必須要說(shuō)明的,這是一個(gè)商業(yè)軟件,需要注冊(cè)(這也就以為著有注冊(cè)機(jī)可以下載,注冊(cè)機(jī)的地址就不多說(shuō)了,上網(wǎng)搜一下就可以了)。下載完成后,安裝即可。
3.配置
我下載的是zip版,解壓縮之后直接拷貝到插件目錄下的,所以配置起來(lái)有些麻煩,之前貌似用過(guò)一個(gè)二進(jìn)制安裝程序版的,安裝完之后基本上不需要配置就可以用了。這里講解一下我配置的過(guò)程。
打開(kāi)Eclipse,新建,在新建向?qū)е校业絊WT/JFace Java Project,單擊Next。

接下來(lái)輸入項(xiàng)目名稱(chēng),選擇JRE(一般默認(rèn)即可),單擊Next,在這一步中,選中Libraries選項(xiàng)卡,單擊Add External JARs,添加外部jar包。

這里一共要添加6個(gè),在你的Eclipse的插件(plugins)目錄中,分別是:
org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar;
org.eclipse.swt_3.2.1.v3235e.jar;
org.eclipse.core.commands_3.2.0.I20060605-1400.jar;
org.eclipse.jface.text_3.2.1.r321_v20060810.jar;
org.eclipse.jface_3.2.1.M20060908-1000.jar;
org.eclipse.equinox.common_3.2.0.v20060603.jar
根據(jù)版本不同,文件名的數(shù)字部分可能會(huì)有些不同,添加好后就可以單擊finish了。
這時(shí)就建立好一個(gè)SWT項(xiàng)目了,但是別著急,如果這時(shí)按照Run as Java
Application的形式運(yùn)行你的SWT程序的話(huà)很可能會(huì)提示:Exception in thread "main"
java.lang.UnsatisfiedLinkError: no swt-win32-3235 in
java.library.path。這是由于沒(méi)有導(dǎo)入SWT原生庫(kù)的緣故。因此我們要右鍵單擊項(xiàng)目,選擇Import,接下來(lái)選擇General-〉
File
System來(lái)導(dǎo)入它,這個(gè)swt-win32-3235以dll文件的形式存在于..\MyEclipse\eclipse\plugins
\org.eclipse.swt.win32.win32.x86_3.2.1.v3235中,通過(guò)Browse按鈕選擇這個(gè)目錄,然后在窗口左邊選中
這個(gè)目錄,在右邊的文件中選中swt-win32-3235.dll這個(gè)文件,finish就可以了。

4.測(cè)試
在新建好的項(xiàng)目中單擊右鍵,選擇新建,Designer->JFace->ApplicationWindow,填入新建的類(lèi)名稱(chēng)和包就可以
新建一個(gè)ApplicationWindow了,系統(tǒng)會(huì)自動(dòng)建立好相應(yīng)的代碼框架,選擇Run as Java
Application,就可以運(yùn)行這個(gè)自動(dòng)生成的SWT程序了。
5.結(jié)束語(yǔ)
說(shuō)實(shí)在的,SWT有很多值得研究的東西,包括Eclipse的插件開(kāi)發(fā)相關(guān)技術(shù),當(dāng)然以后有時(shí)間會(huì)把學(xué)習(xí)心得寫(xiě)出來(lái)的。這篇文章只是簡(jiǎn)單的介紹了SWT的配置過(guò)程,如果需要了解SWT相關(guān)技術(shù)可以查詢(xún)相關(guān)資料。