本文地址:http://www.aygfsteel.com/cpenet/archive/2006/07/04/56539.html
本篇譯自《 Eclipse.Building.Commercial.Quality.Plug.ins.2nd.Edition 》第四章第二節(jié),希望對入門者有所幫助。
組件的生命周期
設計 SWT 的一個目標就是小而靈巧。為了達到這個目標,一個基本的設計策略,就是盡可能的使組件的狀態(tài)存儲在平臺組件中而不是存儲在 SWT 組件中 ( 這句話,我不理解,也翻譯的不明白,附原文: To achieve this, a basic design decision was made that as much widget state as possible would be stored in the platform widget rather than in the SWT widget.) 。這與 Swing 形成顯著的對比, Swing 在 Swing 組件中維護了所有的組件狀態(tài)。 ( 可能是這樣: SWT 把各個組件的狀態(tài)交給系統(tǒng)平臺來管理,而 Swing 自己管理各個 Swing 組件的狀態(tài),這樣 Swing 就復雜,耗費的資源,內存的需求也多,不知道是不是 J ) 。通過不把系統(tǒng)平臺級別的組件信息復制過來自己維護, SWT 就非常的小巧而且對內存的需求也相應少。
達到這個目的所付出的代價就是 SWT 的組件不能夠自己獨立存在。當一個 SWT 組件被創(chuàng)建時,同時立即在系統(tǒng)平臺下也創(chuàng)建了該組件的對應體。接下來,幾乎所有對該組件的信息狀態(tài)請求都會由平臺來處理。
大部分的系統(tǒng)平臺在創(chuàng)建一個組件時,需要該組件明確的父組件的上下文,所以 SWT 需要一個父組件來最為它的構造聲明。許多平臺在創(chuàng)建組件時還需要該組件的特定風格參數(shù)的設定。例如:按鈕有復選框,單選框,簡單按鈕和文本域有單行和多行之分。
在 SWT 類中,風格位段用整數(shù)類型來定義且不會更改。風格參數(shù)被組織在一起,其它各種構造器傳遞著這些參數(shù)來創(chuàng)建一個組件的初始風格。注意到,所有的平臺并不支持所有的風格,所以在很多情況下,被請求的風格被認為是一種提示,它或許會或許不會對一個特殊的平臺產生影響。
當 SWT 組件不在需要時,一些平臺要求作出明確的釋放。對于組件本身和一些資源 ( 例如:圖形,字體,顏色 ) 而言,他們已經具備了系統(tǒng)的這個要求。基本的規(guī)則是:如果你創(chuàng)建了一個組件,就要使用 dispose() 方法來撤銷這個組件。如果你使用了一些系統(tǒng)資源,例如系統(tǒng)顏色,你就不需要釋放他們。
幸運的,當一個組件被釋放的,它的所有子組件會自動地被釋放。這意味著,如果你釋放了一個 shell ,那么所有 shell 包含的組件都會被自動釋放。