關於Eclipse平台的使用和開發第一個SWT程序


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:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM