zoukankan      html  css  js  c++  java
  • JAVA 事件处理模型

    一、用户事件

    用户在程序界面所进行的操作,比如单击鼠标或者输入字符,称为用户事件

    程序对这些用户事件做出响应,称为事件处理。

    二、事件处理模型

    1.事件类型——侦听程序接口

    系统将这些用户事件分类,分成各种事件类型

    系统为每个事件类型提供了一个侦听程序接口,接口包含的方法,规定了接受并处理该类事件的规范。

    2.侦听程序接口——事件侦听程序

    为了接收并处理某个事件类型,组件必须注册相应的事件处理程序,称为事件侦听程序(Listener,也称为侦听器)

    Listener的构造条件有两个:

    一是必须实现对应事件类型的侦听程序接口,

    二是需要实现接口中规定的响应事件的方法。

     例如,为了处理按钮上的ActionEvent事件,需要定义一个实现ActionListener接口的侦听程序类。

    public interface ActionListener extends EventListener{

      public void actionPerformed(ActionEvent e);

    }

    该接口中只定义了一个方法actionPerformed(),当出现ActionEvent事件时,就会调用该方法。

    actionPerformed(),是一个回调函数。即被系统调用的函数。

    直调回调的差别在于,调用主体是不是第一人称的程序体。actionPerformed()是预先设定的函数,但是设定当时并没有被调用,而是等待ActionEvent发生时候,由系统来把这种行为作为参数,调用这个函数。

    btw,系统调用这些回调的方法是轮询,即用轮询的方式在线程池队列中查找侦听这个系统事件的回调函数。

    我们回到这个侦听事件类。每个组件都有若干个形如addXXXListener(XXXListener)的方法,通过这类方法,可以为组件注册事件侦听程序。

    这种处理事件机制称为委托事件处理机制

    概括地说,事件被直接送往产生这个事件的组件,组件需要注册一个或多个侦听程序。侦听程序的类中包含了事件处理程序,接收和处理这个事件。事件是一个对象,它只向注册的侦听程序报告。

    三、GUI事件处理步骤

    1.程序中引入java.awt.event包

    import java.awt.event.

    2.给所需的事件源对象注册侦听事件程序。

    事件源对象.addXXXListener(XXXListener);

    3.实现相应的方法。如果侦听程序接口包含多个方法,必须实现所有方法。

    事件的侦听程序可以定义在一个单独的类中,也可以定义在组件类中。

  • 相关阅读:
    并发与并行
    cgi fastcgi
    阻塞和非阻塞,同步和异步
    PHP常量
    nginx入门(4):FastCGI代理
    fastjson实体转json顺序不一致问题
    vue在一个方法执行完后再执行另一个方法
    如何搭建一个vue项目(完整步骤)
    什么是Node.js?
    Android学习记录---在子线程中使用组件ui会报错
  • 原文地址:https://www.cnblogs.com/mithrandirw/p/8683177.html
Copyright © 2011-2022 走看看