天天看點

【插件開發】—— 4 SWT程式設計須知

  根據前兩篇博文,應該對插件開發有所了解。

前文回顧: 1 插件學習篇 2 簡單的建立插件工程以及模型檔案分析 3 利用擴充點,開發透視圖

  之前學過java的朋友,多少頁會一些關于swing的東西。那麼這裡的swt就是eclipse插件所應用到的小部件開發架構。

  裡面包含了大量的桌面控件,并且進行了一系列的優化整合,相對于swing,極大的減少了記憶體的消耗。而且關于資源的釋放也需要開發者注意,需要特定的手動删除,但是比如一個部件的子部件會随着該部件的銷毀而銷毀。

  下面看一下開發中常用的一些部件模型,這裡介紹的并不全,小控件其實有很多很多,這裡就簡單的介紹幾種:

  

【插件開發】—— 4 SWT程式設計須知

  這裡widget是一個超類,所有的部件都繼承與這個類。它也提供了一些常用的方法,比如添加一些監聽,擷取常用的資訊等等。

  最常用的還要數control了,因為很多button label控件都是繼承這個類,在開發中經常使用的方法就是

  addmouselistener()進行滑鼠點選的監聽

  setbounds 進行控件的重新繪制

  等等。具體的函數,大家可以通過開發多留意一下,就行了。

  eclipse插件開發的程式大多有個不成文的規定,一個程式活動期間,隻能有一個dispaly對象,但是可以有多個shell對象。那麼,什麼是dispaly,什麼又是shell呢。

【插件開發】—— 4 SWT程式設計須知

  這裡紅色箭頭顯示的就是一個display,也就是一個底層的應用執行個體。如果這個執行個體沒有被銷毀,而程式意外停止了,那麼是不能重新運作的。也就是說,運作期間,一個應用程式,隻能有一個display。就像顯示器與視窗内的内容,隻有一個顯示器,但是顯示器内部可以顯示多個檔案内容。

  綠色箭頭對應的就是shell,一個shell相當于一個活動的視窗,可以在裡面添加各種小部件,組成一個豐富的應用界面。

  綜上,一個display可以有多個shell,但是隻有一個display(适用于普通情況).!

  接下來介紹一下如何不啟動一個eclipse 插件工程,來開發swt。這個過程很多教材上都有描述,是以這裡隻提供了上面例子所對應的代碼。

  要注意的是,最後要釋放資源,shell是挂載到dispaly上面(原諒我用挂載這個詞,linux裡面挂載比較生動),是以銷毀display的時候,可以自動的銷毀shell對象。但是color并不是通過挂載方式建立的,是以要獨立的釋放。

  這個函數代碼在一般 工程 裡面就可以運作,但是缺少一個jar包,swt的jar包,這個jar包在eclipse的plugins檔案夾下就可以找到。可以通過引入的方式,引入到工程中。

  其實隻需要swtx86這個jar包就可以了,source是源代碼,可以讓我跟蹤調試swt的源碼。

【插件開發】—— 4 SWT程式設計須知

  為了後面的測試使用,這裡可以把這段代碼進行提取。這樣之後的main函數的類隻要繼承這個abstractexample就可以進行視窗的編輯了。

作者:xingoo