SWT Jface開發入門指南 十一

2021-04-02 23:19:38 字數 2920 閱讀 9929

前一節中我們簡單介紹了一下

action

。其實所謂的

action

就是乙個最常用的事件,舉個例子來說,對於乙個按鈕來說它可以有多個事件,比如按鍵,焦點,滑鼠,等等等等吧,但是實際上在使用程式的時候,我們最關心的,就是按下去這個按鈕會發生什麼,這個其實就是所謂的

action

。如果大家以前做過

swing/awt

變成的話,應該對

action

不會陌生。

在jface

裡面,乙個

action

可以對應多個

gui物件,這些物件就是所謂的

contribution item

。比如我們在一般程式裡面很常見的「檔案」選單,下面都會有「新建」,「儲存」等等。同時我們可以在工具條上放置相應的按鈕,那麼這些都是有相同的功能,在

jface

裡面我們可以只寫乙個

action

,然後把它對映到不同的

contributionitem

去,而不必為每個部件都寫一串處理事件。

我們下面還是通過乙個簡單的例子來說明,在

jface

中怎麼使用選單和工具條這兩種最基本也是最有用的

contribution item

。我們這個程式寫得很傻,就是乙個光禿禿的視窗上做了乙個選單和工具條按鈕,功能也只有乙個,就是每次點一下,就彈出乙個輸入框來問你名字是什麼,然後顯示乙個

hello, ***

之類的。

首先我們還是來寫乙個

action類:

12

public

class

sayhiaction 

extends

action 

1011

@override

12public

void

run() 

1920}21

22}23

**段17

這只是乙個很簡單的

action

類,沒有太多可說的。

然後我們建立乙個

類:

1

2public

class

hiyou 

extends34

private

sayhiaction hiaction;

5public

hiyou(shell parentshell) 

1112

@override

1**rotected

*******manager create*******manager(

intstyle) 

1819

@override

20protected

menumanager createmenumanager() 

2728

/**29

* @param

args

30*/

31public

static

void

main(string args) 

3738}39

**段

18大家可能已經注意到了,在這裡面我們過載了

createmenumanager

和create*******manager

兩個方法,它們的用途就和名字一樣,乙個是用來建立選單的,乙個是用來建立工具條的。過載了這兩個方法以後,通過在建構函式中呼叫

addmenubar

和add*******

讓工具條和選單顯示出來。

這裡值得一提的是

menumanager

和*******manager

類,如果大家翻一下

api文件的話會發現它們都是所謂的

contribution manager

(實現了

iconntributionmanager

介面),你可以通過這些

contribution manager

來實現對特定元件的管理(新增刪除等等)。

具體到選單的建立,看了我們上面的**就很明白了,就直接呼叫相應

menumanager

的add

方法把action

新增上就可以了。

jface

會自動找到這個

action

的gettext

方法設定選單的文字。如果是有好幾層選單,那麼只要在重新

new乙個

menumanager

新增到已有的

menumanager

裡面就可以了。就象前面**中的:

menubar.add(filemenu);

至於工具條就更簡單了,建立乙個

*******manager

然後直接

add對應的

action

就可以了。

如果選單只是文字還沒有什麼,如果你的工具條都是文字是不是會顯得乾巴巴的?其實只要我們為

action

設定imagedescriptor

就可以了,比如你可以自己畫乙個圖示儲存到

action

的包下面(我畫了乙個

hi.gif

),然後把

action

的建構函式改寫成這樣:

public

sayhiaction(shell shell) 

大家注意最後一句話,就是為

action

設定圖示的。然後再執行一下就會發現選單和工具欄都有圖示了。

在這裡給乙個社群做個廣告,大家可以登陸到在中國

eclipse

社群(http://www.eclipseworld.org

),在那裡你也可以找到很多的幫助和支援,當然,你也可以在那裡找到我。

SWT JFace開發入門指南(八)

我們已經有了 swt,我們用 swt可以寫出乙個完整的程式來,那麼我們為什麼需要 jface 呢?對於這一點,本文作者 就是我了,嘿嘿 的理解是 使用 jface 比只是單純地使用 swt程式設計更加簡單,或者說 量更少。畢竟,你完全可以用彙編寫乙個使用者介面,但是付出的代價似乎大了一點 p。如果你...

SWT Jface開發入門指南 十一

前一節中我們簡單介紹了一下 action 其實所謂的 action 就是乙個最常用的事件,舉個例子來說,對於乙個按鈕來說它可以有多個事件,比如按鍵,焦點,滑鼠,等等等等吧,但是實際上在使用程式的時候,我們最關心的,就是按下去這個按鈕會發生什麼,這個其實就是所謂的 action 如果大家以前做過 sw...

SWT JFace開發入門指南(六)

我們在前面在一些例子中已經使用過 layout 了。那麼 layout 到底是做什麼的呢?我 們知道,在設計使用者介面時候,我們可以採用的一種辦法是手動的為每個部件設定合適當大小和位置。但是這樣的話,如果你所要顯示的部件比較多,程式設計量就會非 常大,特別是考慮到窗體大小變化時候各種部件的重繪。而實...