IBM把投入巨資開發的Eclipse作為一個開源項目捐獻給了開源組織Eclipse.org
Eclipse出色而有獨創的平台特性,現在仍由IBM子公司OTI(主要從事Eclipse開發的人)繼續領導着Eclipse的開發.
Eclipse的設計思想是:一切皆為插件.Eclipse的核心是非常小的.其他所有的功能都是以插件的形式附加到這個Eclipse核心的.
這樣的功能插件包括他的圖形API(成為SWT和JFace).Java開發環境插件(簡稱JDT),插件開發環境(PDE).
Eclispe對這些插件是動態載入動態調用的,所謂動態就是指,Eclipse啟動后要真正用到這個插件時,才會被調入內存,當插件不再使用時,它就會被在適當的時候清除出內存.因此即使裝了一大堆插件在Eclipse中,也不必擔心某些不常用的插件白白的占用內存.
Java的標准圖形API:AWT/SWING界面不夠美觀.響應速度慢,一直被人詬病.
Eclipse的SWT/JFace圖形API徹底改變了這一個狀況.
他們在實現上有很大的不同:AWT/SWING是模擬本機窗口組成.而SWT/JFace則直接調用本機窗口組件.當本機沒有所需組件的時候才進行模擬.
SWT/JFace沒有Java的跨操作系統的特性.每一個操作系統要用Eclipse,都要移植一次SWT/JFace.但是SWT/JFace已經移植到了幾個主流的操作系統平台.所以這個已經不再是一個問題了.
Eclipse的插件擴展機制是其最突出的特點和優勢,它使Eclipse提升到了一個平台的高度.
Eclipse的開放源代碼讓他們可以閱讀最頂級的Java源碼.學習最優秀的Java技術.在Eclipse中閱讀這些源碼,有着諸多的設計模式的使用.其編碼的優雅和高效真是令人嘆服不已.
由於是基於Eclipse平台開發的軟件,其界面美觀度和相應速度是普通AWT/SWING程序所無法比擬的.並且以Eclipse插件方式來開發系統.可以基於原有Eclipse菜單,編輯器來擴展,節省了很多開發精力.
SWT/JFace
SWT(Standard Widget Toolkit) AWT (Abstract Windowing Toolkit)
JFace是建立在SWT之上的UI部件,是Eclipse組織為了開發Eclipse IDE環境所編寫的一組底層圖形界面 API,其底層實現為SWT。
SUN在GUI方向上的失敗是公認的事實,失敗關鍵是java的圖形API包AWT/SWING在速度和外觀上都不能讓人滿意,外觀總是和同操作系統平台格格不入,對機器配置的需求也似乎永無止境;
雖然SUN不接納SWT/JFace作為Java中的一種圖形API標准.但是它依然借着Eclipse的優異表現,以不可阻擋的勢頭向前發展着.擁有着標准的Windows外觀.Eclipse軟件就是基於SWT/JFace構建的.
為了方便開發SWT程序,在SWT基礎上又創建了一個更易用,功能強大的圖形包JFace.然而JFace並不能完全覆蓋SWT的所有功能,所以編程時SWT和JFace都會被用到.但是一般來說能用JFace的組件就最好不要用SWT.
SWT簡介補充:
SWT是一個IBM開發的跨平台的GUI開發工具包.他把GUI應用程序的基本組成部分
分為顯示界面(Display),命令界面(Shell)和窗口部件(Widgets).
Display是負責管理事件循環和控制UI線程與其它線程之間的通訊.
Shell是應用程序中被操作系統窗口管理器管理的窗口.
每個SWT應用程序至少需要一個Display和大於等於一個的Shell實例.
SWT沒有通過任何的Java虛擬機來操作.而是直接調用WindowsGDI和Shell功能.
也就是說,在基於Windows平台的Eclipse中,SWT通過DLL形式的本地庫與操作系統交互.
而在UNIX/Mac下.SWT可以通過GTK運行.所以SWT采用了一種類似於Java虛擬機
的運行機制來適應不同的操作系統平台.
SWT中的包:
SWT是Eclipse圖形API的基礎.
1.org.eclipse.swt.widgets
最常用的組件基本都在該包中,如Button,Text,Label,Combo等.
其中最重要的組件當屬Shell和Composite:Shell相當於應用程序的主窗口:Composite相當於SWING中的Panel對象.是容納組件的容器.
2.org.eclipse.swt.layout
主要的界面布局方式在該包中.SWT對組件的布局也采用了AWT/SWING中的Layout和Layout Data結合的方式.
3.org.eclipse.swt.custom
對一些基本圖形組件的擴展在該包中,例如,其中的CLabel就是對標准Label組件的擴展,在CLabel上可以同時加入文字和圖片.在該包中還有一種新的布局方式StackLayout.
4.org.eclipse.swt.event
SWT采用了AWT/SWING一樣的事件模型.在包中可以找到事件監聽類和相應的事件對象.例如鼠標事件監聽器MouseListener,MouseMoveListener等,以及對應的事件對象MouseEvent.
5.org.eclipse.swt.graphics
該包中包含針對圖片,光標,字體或繪圖API.例如可通過Image類調用系統中不同類型的圖片文件.
6.org.eclipse.swt.ole.win32
對於不同的平台,SWT有一些針對性的API.例如,在Windows平台,可以通過該包很容易的調用OLE組件或者使得SWT程序也可以內嵌IE瀏覽器或Word,Excel等程序.
SWT Designer還無法完成所有的界面設計工作,所以在界面開發中依然是以手工寫代碼為主,而且手寫代碼在某些時候比界面拖拉操作更快捷.
SWT Designer還不是很穩定,不要在界面中加入太多的組件.
不要頻繁的移動組件,或者刪除又添加組件,否則可能因為內存耗盡而死機.
(我到SWT Designer官網上去下載SWT Designer但是沒有找到.......貌似在賣域名)
>>>>>>>>>>>>>>>>后來了解到增加
原來WindowBuilder就是原來的SWT Designer.Google收購了Instantiations,把它的工具也重新免費發發布了.
用過swt designer的人都知它是非常好用的swing/swt可視化開發工具,有了它,swing/swt也可以像visual studio一樣拖拉控件寫程序(雖然netbean也可以,不過沒怎用),可惜是個收費產品,后來把改名為windowbuilder。不過Google把這個工具的開發公司Instantiations收購了,並把這個產品免費發布。Google收購Instantiations是為了給它的GWT設計開發工具,據說也是為了它的Anroid搞開發工具.必須要安裝好這個插件才能順利的創建SWT程序的開發.
我用的是Eclipse的kepler版本,最新的Luna版本必須要求配置的JRE是1.7的版本.
采用Eclipse的在線安裝.附加上Kepler版本的WindowBuilder的安裝地址.(不同Eclipse版本的WindowBuilder插件是不一樣的)
http://www.eclipse.org/windowbuilder/
http://www.eclipse.org/windowbuilder/download.php
http://download.eclipse.org/windowbuilder/WB/release/R201406251200/4.3/
>>>>補充:
當我第二次要在公司電腦上裝這個插件的時候訪問這個URL也訪問不到.這里把整個的過程寫下來:
右鍵help----->Eclipse Marketplace
有的Eclipse插件在這個市場上可以直接安裝,向這個插件就不能直接安裝.這個地方還挺操蛋,我一開始點擊有數字的152五角星,在這個按鈕的右下部分有一個小框框,具體內容我記不清了.
彈出的小框中有一個"Continue"點擊這個Continue就可以訪問WindowBuilder插件的網址.(但是這個小五角星點擊幾次之后右下部分的框框就沒有了,再跳轉到的網站就不是插件的網站.)
之后訪問的網址是:
http://www.eclipse.org/windowbuilder/
點擊download
http://www.eclipse.org/windowbuilder/download.php
根據你自身的Eclipse選擇和適合的版本
http://download.eclipse.org/windowbuilder/WB/release/R201406251200/4.3/
這個時候就可以再Eclipse中help----->Install New Software
把http://download.eclipse.org/windowbuilder/WB/release/R201406251200/4.3/這個網址放到里面.
就可以下一步下一步的在線安裝了.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>完成>>>>>>>>>>>>>>>>
在Eclispe中開發SWT程序的步驟:
1.在eclipse中"文件"---->"新建"----->"其他"----輸入"swt" 選擇SWT/JFace Java Project
然后輸入項目名字和包的名字(走默認配置就可以了) 比如建立的想項目的名字是myswt
2. 在這個項目中建立一個package.(這個方式和普通個的Java項目是一樣的.)比如建立的是:com.swtdesiger2
3.在這個包上右鍵"新建"---->"其他"----->"輸入application"選擇"Windows Builder下的SWT下的Applicaiton window"
3.選擇 "SWT下的Application Window"之后就輸入這個java文件的名字(我這個起名字為HelloWorld2).然后會自動生成一些代碼.
Eclipse自動生成的代碼如下:(第一個關於SWT的HelloWorld程序)
1 package com.swtdesigner;// 包名 2 3 import org.eclipse.swt.widgets.Display; 4 import org.eclipse.swt.widgets.Shell; 5 6 /** 7 * created by kongxiaohan on Dec 12, 2014 Detailled comment 8 * 9 */ 10 public class HelloWorld { 11 12 /** 13 * Launch the application. 14 * 15 * @param args 16 */ 17 public static void main(String[] args) { 18 // 創建一個典型的SWT應用程序的步驟 19 // display負責管理實踐循環和控制UI線程和其他線程之間的通信 20 Display display = Display.getDefault(); // 1.創建一個Display 21 Shell shell = new Shell();// 2.創建一個或者多個Shell(shell是程序的主窗口) 22 shell.setSize(450, 300);// 3.設置Shell的布局(設置主窗口的大小) 23 shell.setText("SWT Application"); 24 // 4.創建Shell中的組件(這個例子中沒有加入組件,只是一個空窗口) 25 shell.open();// 5.用Open()方法打開Shell窗口 打開shell主窗口 26 shell.layout();// shell應用界面布置 27 // 6.寫一個事件轉發循環. 28 while (!shell.isDisposed()) {// 如果主窗口沒有關閉,則一直循環 29 if (!display.readAndDispatch()) {// 如果display不忙 30 display.sleep();// display休眠 31 } 32 } 33 } 34 }
點擊運行出來一個空的panel: