Java事件处理学习
当操作系统为用户的一个动作(例如:点击鼠标)产生一个事件,和操作系统通信的那部分AWT会收到一个通知并且把它转换成一个AWT Event。然后AWT将这些事件放入事件队列中。一些AWT派遣这些事件给listeners,步骤如下:
1. 从事件队列中去事件;
2. 给这个事件找到匹配的listener;
3. 为这个事件调用适合的listener过程
相关概念:
1. Event Source:触发事件的源组件。其中有能够登记事件侦听对象的方法。当Source的一个事件发生的时候,Source将这个事件(Event)的消息传递给所有这个事件的侦听对象(Event Listener)。
2. Event:事件对象。所有有关事件的信息被封装在一个事件对象中。在java中,所有事件对最终继承自java.util.EventObject 对象。当然每一种具体的事件有自己的继承自的事件对象,例如: ActionEvent 和 WindowEvent.在java.awt包中。
3. Event Listener:事件侦听对象。Listener 对象利用传给它的event 对象的信息决定他们执行什么动作。在java.util包中。
4. Action:如果你有两个或者更多组件执行同一个函数,考虑使用Action 对象去实现这个函数。Action对象是一个不仅提供活动事件处理并且集成了触发这个事件的组件(如:toolbar button、menu items、common buttons 和text fields)的描述的处理的action Listener。Swing包提供了非常实用的机制用了封装命令并且将他们和多种event source联系起来:Action 接口。Action interface继承自ActionListener interface ,因此你可以在希望使用ActionListener对象的任何时候使用Action对象
Action对象封装了下面内容:命令的描述、处理这些命令的参数;
Action interface 有下面方法:
void actionPerformed(ActionEvent event)
void setEnabled(boolean b)
boolean isEnabled()
void putValue(String key, Object value)
Object getValue(String key)
void addPropertyChangeListener(PropertyChangeListener listener)
void removePropertyChangeListener(PropertyChangeListener listener)
事件的种类:
Semantic Events :用户触发组件可以发生的event。如:ActionListener
Low-Level Events:使这成为可能的event。如:Mouse Event
Container Event |
Foucs Event |
Window Event |
Paint Event |
Input Event |
Key Event |
Mouse Event |