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