標籤:
事件處理:
ActionEvent && WindowEvent:
ActionEvent -- 包含一個ACTION_PERFORMED。觸發的動作有單擊button,雙擊選項,選擇指定功能表項目,斷行符號鍵輸入等。
addActionListener(<al>) -- al ->ActionListener or a class implements ActionListener。
button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){buttonPanel.setBackground(backgroundColor); }});
上述代碼相當於聲明一個類實現ActionListener介面然後在類中實現actionPerformed方法。其中backgroundColor應該被定義為final。
為什麼這樣做,因為java編譯器在進行編譯的時候會自動產生構造器,換言之就會多產生一個類,如所示,類檔案“ButtonFrame$1.class”,而在值傳遞時候被傳遞的值一旦被賦值是不允許在發生更改的,要不會出現不一致的情況。
EventHandler -- create() 可以用於動態建立監聽器。作用對象必須是public, 否則構建失敗。
EventHandler.create(Class actionInterfaceClass, Object Target, String actionList, String PrpertiesList);
actionList,PropertiesList -- "action.action1.action2..." && "Para1. Para2." 用點好隔開多個元素。(不是很懂-- 待補充)
Listener是用於監控event的,內含actionPerformed方法是處理event的。
JComponent && JPanel:
JComponent是斯普皮Swing組件(除了最上層的組件)的容器。
JPanel是JComponent的一種,是一種輕量級的容器,有很多種布局,在Java API中的繼承順序是: Java.awt.Container --> javax.swing.JComponent --> javax.swing.JPanel
事件處理的核心是:一個對象添加一個監聽器用於對某個Action事件進行處理:
object.addActionListener(new ActionListener(){}); (匿名內部類 -- 定義一個實現了ActionListener介面的類的對象)
--> object.addActionListener(new ActionListener(){ public void actionPerformed(){} });
--> object.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){} });
所以根源在於定義一個Action,並且定義好一個處理Action的方法 (new ActionSample implements ActionListener { public void actionPerformed(ActionEvent event){}}),然後在定義某對象執行個體的時候用 smpleObject.addActionListener(ActionSample);來對執行個體添加事件處理監聽器。
一個Java名詞:適配器類。適用範圍,定義的介面中有諸多方法,但用於實現該介面的類只需要介面中定義的一部分方法,所以這時候需要一個類來實現這個介面作為一個適配器類,在該適配器類中所有介面種方法實現均為空白,這樣原來需要實現這個介面的類就可以通過繼承該適配器類而達到只對部分類進行重寫,避免內容冗餘。聯想到匿名內部類,首先匿名內部類是用於定義一個實現了某個借口或者繼承了某個類的類的對象,因此如果設定一個實現了某個借口的適配器類,然後將該適配器類應用於匿名內部類,就可以避免在匿名內部類的定義部分實現很多沒有必要的方法,從而美觀java代碼以及提高可讀性。
語義事件:描述使用者動作的事件,如點擊按鈕;
低級事件:組成語義事件的事件,例如點擊按鈕過程中的移動滑鼠,抬起滑鼠,按下滑鼠按鍵;
Java Learning (9)