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