SWT學習筆記!
1,SWT/JFace 與AWT/SWING 區別是?
java的標準圖形 API : AWT/SWING 一直是被後人詬病的, 用它寫的頁面不夠完美, 頁面響應速度還慢。後來出現的Eclipse 的SWT/JFace 圖形 API 徹底改變了這一狀況。主要原因是: SWT/JFace 與AWT/SWING 在實現上有很大的不同, AWT/SWING 是類比本機視窗組件, 而 SWT/JFace 則是直接調用本機視窗組件,當本機沒有所需組件時才進行類比。
2,SWT/JFace 的缺點是?
它沒有java的跨平台的特性,每個OS要用eclipse,都需要重新移植一次SWT/JFace ,這也是SWT/JFace 最具爭議的地方。不過因為SWT/JFace 已經移植到了幾個主流的OS上了,所以這已經不再是什麼嚴重的問題了。
3,eclipse可以用來開發JAVA、C、C++等
eclipse有極為強大的整合式開發環境,它整合了CVS, JUnit, Ant, 並且強大的代碼重構功能獨步江湖、無人能及。eclipse的安裝包整合了java開發環境的外掛程式、JDT、所以、它是預設的java開發工具、但它不僅對java開發、給它裝上C/C++的外掛程式、就用可以用開發C、C++了。
4、eclipse常用外掛程式的安裝、以及下載地址。
eclipse的外掛程式安裝其實很簡單、只需要將安裝的外掛程式包拷貝到eclipse下面的plugins就ok了。
SWT Designer 是一個很好的eclipse的SWT 介面開發外掛程式包、SWT Designer支援、介面組件拖拉操作
官方網站地址: http://www.swt-designer.com
MyEclipse:j2ee開發外掛程式、支援jsp、ejb、資料庫操作。官方網站地址:http://www.myeclipseide.com/
lomboz: 是和MyEclipse 同類型的外掛程式、不過 MyEclipse 是收費的、 lomboz免費 這樣的外掛程式有很多、這裡就不詳細介紹了。
5, SWT/JFace的簡單介紹!
SWT/JFace 有多強大,看看eclipse3.0(and以後版本),就可以清楚的知道了。 首先, JFace是為了方便開發SWT程式,在SWT基礎上建立的一個更易用,功能強大的圖形包。然而, JFace並不能完全覆蓋SWT的所有功能,所以,編程時,JFace和SWT都會被用到,但是一般來說能用JFace組件,就最好不要用SWT的。
6, SWT中的包!
①org.eclipse.swt.widgets
最常用的組件基本都在這個包裡,如:button,text,label,combo等,其中兩個最重要的組件當數,shell 和 composite;shell相當於應用程式的主視窗,composite,相當於SWING中的panel對象,時容納組件的容器。
②org.eclipse.swt.layout
主要的介面布局方式在該包中。SWT對組件的布局也採用了AWT/SWING中的Layout 和 Layout Data 結合的方式
③org.eclipse.swt.custom
對一些基本圖形組件的擴充在該包中。例如:其中的CLabel就是對標準Label組件的擴充,在CLabel上可以同時加入文字和圖片。在該包中還有一個新的布局方式StackLayout。
④org.eclipse.swt.event
SWT採用和AWT/SWING一樣的時間模型,在包中,可以找到事件監聽類和相應的事件對象。例如:滑鼠事件監聽器MouseListener,MouseMoveListener等,以及對應的事件對象MouseEvent。
⑤org.eclipse.swt.graphics
該包中,包含針對圖片,游標,字型和繪圖API。例如:可通過IMAGE類來調用系統中不同類型的圖片。
⑥org.eclipse.swt.ole.win32
對不同平台,SWT有一些針對性的API。例如,在Windows平台,可以通過該包很容易的調用ole組件,這使得SWT程式也可以內嵌IE瀏覽器或Word,Excel等程式。
eclipse學習筆記!(2) ----- SWT Designer 概述收藏
SWT Designer是優秀的SWT/JFace開發協助工具輔助, 以下通過寫一個Hello World的小程式來簡單瞭解下SWT!
首先從官方網站下載http://www.swt-designer.com,之後,把對應的檔案拷貝到Eclipse目錄下,這時,在Eclipse的windows的喜好設定裡面,就可以看到designer了,點擊註冊,通過註冊機完成註冊!
然後建立項目時候,選擇designer下面的 SWT/JFace java project , 項目名字右鍵 new other ... designer... Swt...Application Window 選項建立一個第3項 main 主函數的類, 然後就可以運行這個類了。產生的程式碼如下:
package src;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class HelloWorld ...{
/** *//**
* Launch the application
* @param args
*/
public static void main(String[] args) ...{
//display負責管理事件迴圈和控制UI線程和其他線程之間的通訊
final Display display = Display.getDefault();
final Shell shell = new Shell(); //SHELL是程式的主視窗
shell.setSize(500, 375); //主視窗大小
shell.setText("SWT Application");//主視窗標題
//
shell.open();
shell.layout();
while (!shell.isDisposed()) ...{ //如果,主視窗沒有關閉,則一直迴圈
if (!display.readAndDispatch())//如果DISPLAY不忙
display.sleep(); //DISPLAY休眠
}
}
}
從這個代碼可以看到,建立一個典型的SWT應用程式需要以下的步驟:
· 建立一個Display
· 建立一個或多個Shell
· 設定SHELL的布局
· 建立Shell中的組件(以上代碼中沒有組件,只有一個主視窗,run時候就可以看到一個空的視窗)
· 用open()方法開啟Shell視窗
· 寫一個事件轉寄迴圈
· 銷毀Display。
下面,進行視窗中組件的添加, 首先, 把視圖切換到designer項,選擇SWT Controls分類下的text 組件,放入視窗中,然後對這個組件的屬性設定中的 text 設定為 HelloWorld 。 (其他的屬性都可以根據自己的情況來設定) 但是 SWT Designer 還無法完成所有的介面設計工作,所以,介面開發中,仍然是以代碼設計為主的, 另外 SWT Designer 還不是狠穩定, 介面加入太多的組件, 或頻繁的添加刪除群組件,都有可能造成記憶體耗盡而死機。
eclipse學習筆記!(3) ----- SWT Designer 下 SWT/JFace 事件的四種寫法以及常用的事件收藏
SWT/JFace 事件的四種寫法
SWT 的事件模型和 JAVA 標準的 AWT 基本一樣的。下面將按照,事件的四種寫法來實現它。下面的代碼都是和上一個學習筆記裡的小例子變化來的。
· 匿名內部類寫法
在原來程式碼"HelloWorldText = new Text(shell, SWT.BORDER);"下面插入如下的代碼:
HelloWorldText.addMouseListener(new MouseAdapter()...{
public void mouseDoubleClick(MouseEvent e) ...{
MessageDialog.openInformation(null,"","Hello world");
}
});
new MouseAdapter(); 就是一個匿名內部類。我們建立了一個繼承於MouseAdapter的類,但並沒有給這個類命名,並且沒有用通常的寫法,而是直接在HelloWorldText.addMouseListener()中,寫下了這個類的代碼,這就是所謂的匿名內部類。
缺點:
1. 由於事件處理,代碼會隨著組件一起分散到代碼中的各個部分,不集中,導致閱讀和維護的不便。
2. 各事件的處理全部由嵌套的程式塊組成,視覺上很亂,如果事件處理代碼很長,也會導致閱讀和維護不便。
3. 當功能表列,工具列等也需要處理相同的使用者行為時,無法重用事件中的處理代碼