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开始计时的毫秒数