一 、 我們常常會遇到這樣乙個問題:很多元件都需要處理相同的事件 ; 比如,通常乙個軟體在設計時會因使用者習慣,
產生不同的操作方式卻能達到相同的功能,例如文書編輯器中,copy功能可能在選單**現,
也可能在工具欄上出現,甚至在快顯選單(popup menu)**現,雖然出現的方式不一樣,
但均能達到copy的功能.若以我們之前的事件處理方法,我們必須為每種出現方式實現copy功能,
造成程式**重複性太高,不易閱讀也不美觀。現在我們就有這樣乙個處理方法——使用action介面
二、action從表面的意思上就是「動作、行為」 , 也就說乙個實現action介面的物件,本身就是一種業務,就是一種
處理功能,我們可以使用這個業務物件來建立不同的元件(如普通按鈕、選單項、工具欄按鈕等),這樣的話這些元件
就都有相同的功能了
三、下面就來詳細的介紹action介面的用法
1、action介面是actionlistener介面的子介面,它除了包含actionlistener介面的actionperformed()方法之外,
還含有name和icon兩個屬性,其中name用於指定建立的按鈕或者選單項的文字標籤,icon則用於指定按鈕的圖示或者
選單項中的圖示。也就是說,action介面將「事件監聽」和「可被轉換成按鈕和選單項」集於一身,這恰好說明了上面所說的
功能
2、實際上在jbutton的構造方法 public jbutton(action action )中、j*******的add(action action) 、以及jmenu的
add(action action )方法中都可以看出,他們都能夠使用action物件為引數,將action自動的轉化為按鈕或者選單項,你要做的
僅僅是定義乙個action物件,之後僅僅需要呼叫上面的方法就能夠自動的將action轉化成元件了
3、就像上面說的那樣,action本身並不是元件,只有應用jbutton的構造方法或者將action新增到指定的元件容器中(j*******或者jmenu)
才能夠將值轉化成元件
4、總結上面的各項我們可以得出,接收action的容器(或者jbutton)需要完成以下幾項工作:
①使用add方法新增action物件
②根據action物件中的name和icon屬性,自動的建立按鈕或者選單項
③通過action物件為應用元件註冊事件***,系統會為該action所建立的所有的元件註冊同乙個事件***
(事件處理器就是action物件裡的actionperformed()方法)
④在action介面中還有乙個setenabled(boolean)方法,這個方法用來指定當前的action動作是否被啟用,
只有乙個action動作被啟用後,相應的元件才能夠使用③中的***來處理業務,這是為什麼呢?比如:我們建立了
「複製」「貼上」兩項action業務的話,那麼只有當複製完成後,「貼上」業務才可以被啟用,否則「貼上」業務預設
應該是不被啟用的
好了,基本的邏輯搞清楚之後,那麼下面就是如何建立乙個action物件了,一般我們並不是直接通過建立乙個
實現action介面的類,之後在通過這個類來建立action型別的物件,而是建立乙個實現abstractaction抽象類的類;
這個抽象類abstractaction實現了action介面,而且這個抽象類,除了actionperformed()方法之外,
已經將action中包括setenabled(boolean)在內的所有方法都實現了,這樣一來我們就能夠直接使用setenabled()
等游泳的方法了;好了這樣一來abstractaction抽象類中只有actionperformed()方法沒有實現,這個方法應該在
建立的那個實現了abstractaction類的類中實現;所以建立乙個action物件的過程如下:
①建立乙個類(設為b類),讓這個類繼承abstractaction抽象類
②建立b類的構造方法,為abstractaction中的name和icon屬性賦值
(abstractaction抽象類中有構造方法 publicabstractaction
(string name,icon icon))
③在b類中實現actionperformed()方法,在些業務處理時,要注意是要將某些其他的業務啟用或者關閉
介面的使用
由於c 類不能多重繼承。但現實有許多多重繼承的情況。為了避免傳統多重繼承帶來的複雜性問題和滿足多重繼承的需要,就提出了介面的概念。介面提出了一種規範,讓使用介面的程式設計人員要遵守其提出的約定。c 中申明介面時,使用關鍵字inte ce。using system using system.colle...
使用介面的好處
1 用介面來引用特定的實現類,而不是用 特定的類來引用自己 list list new arraylist list list new linkedlist 一旦需要改變自己的實現細節,要做的全部事情就是在建立的時候改變它。其餘 可保持原樣 2 用介面來呼叫其實現類的方法 service servi...
java Enumeration介面的使用例子
enumeration介面 enumeration介面本身不是乙個資料結構。但是,對其他資料結構非常重要。enumeration介面定義了從乙個資料結構得到連續資料的手段。例如,enumeration定義了乙個名為nextelement的方法,可以用來從含有多個元素的資料結構中得到的下乙個元素。en...