事件和事件源

来自CloudWiki
Cloud17讨论 | 贡献2018年5月22日 (二) 14:41的版本 (创建页面,内容为“==事件== 事件代表了某对象可以执行的操作及状态。描述在某个时间,某个对象上,发生了某件事情。通过鼠标、键盘与 GUI…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

事件

事件代表了某对象可以执行的操作及状态。描述在某个时间,某个对象上,发生了某件事情。通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。如:按下一个按钮、通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等。 事件处理模型由产生事件的对象(事件源)和事件对象(事件接口)以及监听者(事件监听器)对象组成。如图所示:

事件的执行流程: 当使用者在事件源上发生动作时,动作会激活事件监听器方法,事件监听器方法会收集事件源的信息,自动调用监听器方法中的对象参数的事件处理方法;执行事件处理方法中的代码,完成整个事件的操作。 例如:当用户用鼠标点击一个按钮登录(JButton的对象)时,登录按钮就是事件源,此时就会产生一个ActionEvent事件,事件监听器会捕获单击动作,并作出相应的反应。 2. Java事件体系结构 Java事件体系结构如图所示。

图 事件类体系图 Java事件类的说明详见表4-5。 表 Java事件类的相关说明 事件类 说明 事件源 ActionEvent 通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。 Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。 Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。 Component ItemEvent 单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成此事件。 Checkbox、CheckboxMenuItem、Choice、List FocusEvent 组件获得或失去键盘焦点时会生成此事件。 Component KeyEvent 接收到键盘输入时会生成此事件。 Component MouseEvent 拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。 Component ContainerEvent 将组件添加至容器或从中删除时会生成此事件。 Container TextEvent 在文本区或文本域的文本改变时会生成此事件 。 TextField、TextArea WindowEvent 当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。 Window 3. Java事件监听器和监听方法 java.awt.event包中还定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。如表所示,一般说来,每个事件类都有一个监听者接口与之相对应,而事件类中的每个具体事件类型都有一个具体的抽象方法与之相对应,当具体事件发生时,这个事件将被封装成一个事件类的对象作为实际参数传递给与之对应的具体方法,由这个具体方法负责响应并处理发生的事件。例如ActionListener,这个接口定义了抽象方法:public void actionPerformed(ActionEvent e)。凡是要处理ActionEvent事件的类都必须实现ActionListener接口,并重写相应的actionPerformed()方法 表 Java事件监听器和监听方法 事件监听器 方法 ActionListener actionPerformed AdjustmentListener adjustmentValueChanged ComponentListener componentResized、componentMoved、componentShown、componentHidden ContainerListener componentAdded、componentRemoved FocusListener focusLost、focusGained ItemListener itemStateChanged KeyListener keyPressed、keyReleased、keyTyped MouseListener mouseClicked、mouseEntered、mouseExited、mousePressed、mouseReleased MouseMotionListener mouseDragged、mouseMoved TextListener textChanged WindowListener windowActivated、windowDeactivated、windowClosed、windowClosing windowIconified、windowDeiconified、windowOpened