Java事件监听器
Java事件监听器
在java中,事件的处理非常重要,如响应键盘的输入,鼠标的点击,窗口的移动等等。java事由事件类和监听接口组成,算定义一个事件前,必须提供一个事件的监听接口以及一个事件类。java中监听接口是继承自java.util.EventListener的,事件类继承自java.util.EventObject。很多基本的事件系统已经为我们定义好了,我们只要学会调用即可,但是为了更加灵活地满足特定的要求,我们有时候需要自定义事件。
java事件监听器即一组动作接口。如键盘事件KeyEvent对应的接口是:
public interface KeyListener extends EventListener {
public void keyPressed(KeyEvent ev);
public void keyReleased(KeyEvent ev);
public void keyTyped(KeyEvent ev);
}
这个监听器定义了三个动作,键盘按下去调用KeyPressed方法,键盘抬起来调用KeyReleased,键盘被敲击一次调用KeyTyped。
事件监听器是需要注册才能使用的,注册方法如下:
public void add<LitenerType>(<ListenerType>listener);
事件监听器也可以注销,注销方法如下:
public void remove<ListenerType>(<ListenerType>listener);
事件监听器机制是观察者模式的一种,通过把事件源和事件处理流程以监听器的方法隔离开来,减少了主流程与被触发事件的执行流程间的耦合,便于代码的维护和事件处理流程的扩展。
在事件监听机制中,涉及三个角色:事件、发布者和监听器
事件:在事件源和事件监听器之间传递信息的对象实体。
发布者:在事件发生后,负责把事件发布到监听者的对象。
监听者:监听事件,并进行处理或转发的对象。
java中提供了事件监听器实现的框架,使用java事件中的事件监听器,需要熟悉以下几个类或接口:
1.EventObject:事件的基类,在java中自定义事件时需要继承的基类,其定义了事件源---Object类型的属性,可以把发生事件所在的类实例的引用传递过来,以便于在事件处理流程中使用(如果有使用要求的话)。在自定义的事件中,还可以定义自己应用所需的其他属性。
2.EventListener:自定义事件监听器必须实现的接口,没有具体方法,只起到标识作用。
AWT事件及其相应的监听器接口(1)
下表列出了所有AWT事件及其相应的监听器接口,一共10类事件,11个接口。下面这张表应能牢牢记住。
事件类别 | 描述信息 | 接口名 | 方法 |
ActionEvent | 激活组件 | ActionListener | actionPerformed(ActionEvent) |
ItemEvent | 选择了某些项目 | ItemListener | itemStateChanged(ItemEvent) |
MouseEvent | 鼠标移动 | MouseMotionListener | mouseDragged(MouseEvent) mouseMoved(MouseEvent) |
鼠标点击等 | MouseListener | mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) | |
KeyEvent | 键盘输入 | KeyListener | keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) |
FocusEvent | 组件收到或失去焦点 | FocusListener | focusGained(FocusEvent) focusLost(FocusEvent) |
AdjustmentEvent | 移动了滚动条等组件 | AdjustmentListener | adjustmentValueChanged(AdjustmentEvent) |
ComponentEvent | 对象移动缩放显示隐藏等 | ComponentListener | componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) |
WindowEvent | 窗口收到窗口级事件 | WindowListener | windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) |
ContainerEvent | 容器中增加删除了组件 | ContainerListener | componentAdded(ContainerEvent) componentRemoved(ContainerEvent) |
TextEvent | 文本字段或文本区发生改变 | TextListener | textValueChanged(TextEvent) |
|
评论暂时关闭