曾经沧海难为水,除却巫山不是云。
事件监听器
-
类要对用户事件作出响应,必须实现处理该事件的接口,这些接口被称为事件监听器。
-
每个监听器都处理特定的事件,类可以根据需要实现任意数目的监听器。
-
监听器模型涉及以下三个对象,模型图如下:
(1)事件:用户对组件的一个操作,称之为一个事件
(2)事件源:发生事件的组件就是事件源
(3)事件监听器(处理器):监听并负责处理事件的方法 -
在java中,事件监听器包含如下接口:
(1)ActionListener:行为事件,由用户对组件执行某种操作(如单击按钮)触发。
(2)AdjustmentListener:调整事件,组件被调整(如移动滚动条上的滑块时)触发。
(3)FocusListener:键盘焦点事件,诸如文本框等组件获得或失去焦点时触发。
(4)ItemListener:选项事件,诸如复选框等选项被修改时激发。
(5)KeyListener:键盘事件,用户通过键盘输入文本时激发。
(6)MouseListener:鼠标事件,鼠标单击,鼠标移入 ,或离开组件时触发。
(7)MouseMotionListener:鼠标移动事件,跟踪鼠标在组件上的运动。
(8)WindowListener:窗口事件,窗口(如应用程序的主窗口)被最大化、最小化、移动或关闭时被触发。 -
执行顺序如下:
1、给事件源注册监听器
2、组件接受外部作用,也就是事件被触发
3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器
4、事件处理器启动,并执行相关的代码来处理该事件。
给组件注册监听器
创建组件之后,可以通过下面的方法将组件和监听器关联起来。
(1)addActionListener():JButton、JCheck、JComboBox、JTextField、JRadioButton
(2)addAdjustmentListener():JScrollBar组件
(3)addFoucusListener():所有的swing组件
(4)addItemListener():JButton、JCheckBox、JComboBox和JRadioButton组件
(5)addKeyListener():所有的swing组件
(6)addMouseListener():所有的swing组件
(7)addMouseMotionListener():所有的swing组件
(8)addWindowListener():所有的JWindow和JFrame组件。
将组件加入容器之前,必须将组件和监听器关联起来,并完成其他配置操作,否则当程序运行时,这些设置将被忽略。
事件处理方法
- 所有的add方法都接受一个参数:对事件进行监听的对象,This表示当前类就是事件监听器。也可以指定其他的对象,只要它实现了相应的监听器接口。
- 就事件监听器来说,每个方法都是由窗口系统自动调用的,这是在对应的用户事件发生时进行的。
- 如果多个组件有相同的监听器,则必须判断程序中哪个组件被使用了,每种事件处理方法都接受某种事件对象作为参数,这种对象的方法getSource()可用来判断激发事件的组件。
行为事件
- 行为事件在用户使用JButton,JCheckBox,JComboBox,JTextField
JRadioButton.时发生的。 - 要处理这些事件,类必须实现接口ActionListener。此外,必须对每个要激发行为事件的组件调用addActionListener()。
- 方法actionPerformed(Action Event)是接口ActionListener中唯一的方法,其格式为:
public void actionPerformed(ActionEvent evt){
}
行为事件实例
package ActionListenerDemo;
import java.awt.FlowLayou