Chapter 12 Event-Driven Programming
1. source object: 事件產生源
比如一個按鈕就是單擊按鈕這個動作的產生源,每個事件都是事件類的一個實例,事件類的根類為java.util.EventObject
EventObject.getSource()返回產生源
如果某個控間能夠產生某事件,那么它的任何子類都能夠生成該事件。
除了javax.swing.event.ListSelectionEvent,其余事件類都包含在java.awt.event包中
2. Java 的事件處理機制稱為 delegation-based model,用戶作用于某個source object上,另一個對象捕捉到這個事件。后者稱為listener,成為listener的兩個必要條件:
listener類必須實現event-listener的接口,Java為每個GUI事件提供了listener,如
ActionEvent - ActionListener listener接口都包含了稱為處理機(handler)的方法處理事件。
listener類必須由source object注冊,注冊方法由具體的事件類型決定。如ActionEvent - addActionListener
例如,要監聽JButton類的單擊事件
ListenerClass listener = new ListenerClass();
JButton jbt = new JButton("OK");
jbt.addActionListener(listener);
如果某個listener被注冊了兩次,則相應的處理也會進行兩次。
3. EventObject 類
getSource()方法獲得產生源
java.awt.event.ActionEvent 類
String getActionCommand()方法獲得有關該動作的命令串,如對于按鈕,返回按鈕的文字
int getModifier()方法獲得在該動作進行時modifier keys(應該是alt ctrl shift吧)的情況
long getWhen()方法返回該動作進行的時間,自1970.1.1 00:00:00開始計時的毫秒數