zoukankan      html  css  js  c++  java
  • java 事件处理机制

    本讲内容
      事件
      事件的概念与事件对象
      事件源
      事件类型

      事件处理机制
      事件处理器(事件处理方法)
      事件监听器接口与事件监听器类
      事件监听器适配器

    一.GUI的设计步骤

    1.建立用户界面
      设计一个顶层容器对象,如JFrame
      确定布局,增加组件
      改变组件颜色、字体

    2.增加事件处理
      编写事件监听器类(内含事件处理方法)
      在事件源上注册事件监听器对象

    3.显示用户界面

    二.事件处理机制的几个重要概念

    1.事件
      事件是用户在界面上的一个操作(通常使用各种输入设备,如:鼠标、键盘等来完成)。
      当一个事件发生时,该事件用一个事件对象来表示。事件对象有对应的事件类。不同的事件类描述不同类型的用户动作。事件类包含在java.awt.event和javax.swing.event包中。

    2.事件源
      产生事件的组件叫事件源。在一个按钮上单击鼠标时,该按钮就是事件源,会产生一个ActionEvent类型的事件。

    3.事件处理器(事件处理方法)
      事件处理器是一个接收事件对象并进行相应处理的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。

    4.事件监听器类
      包含事件处理器,并负责检查事件是否发生,若发生就激活事件处理器进行处理的类叫做事件监听器类。其实例就是事件监听器对象。事件监听器类必须实现事件监听器接口或继承事件监听器适配器类。
      事件监听器接口定义了处理事件必须实现的方法。事件监听器适配器类是对事件监听器接口的简单实现。目的是为了减少编程的工作量。
      事件监听器接口和事件监听器适配器类也都包含在java.awt.event和javax.swing.event包中。

    5.注册事件监听器
      为了能够让事件监听器检查某个组件(事件源)是否发生了某些事件,并且在发生时激活事件处理器进行相应的处理,必须在事件源上注册事件监听器。这是通过使用事件源组件的以下方法来完成的:
      addXxxListener(事件监听器对象)
      Xxx对应相应的事件类。

    三.事件处理机制——委托事件处理

    1.

    2.事件处理实例:关闭窗口

     

    四.监听器类——MyWindowListener.java

    import java.awt.event.WindowListener;
    import java.awt.event.WindowEvent;
    
    public class MyWindowListener implements WindowListener {
        …
        public void windowClosing(WindowEvent e) //事件处理器
       {
            e.getWindow().setVisible(false);
            e.getWindow().dispose();
            System.exit(0);   
        }
        …
    }

    五.图形用户界面——TestFrame.java

    import java.awt.*;
    public class TestFrame
    {
        public static void main(String [] args)
        {
            
            Frame fr=new Frame(“事件处理实例"); 
            fr.setSize(500,500);            //设置窗口的大小
            fr.setBackground(Color.green);  //设置窗口背景颜色
               //注册事件监听器对象,Frame组件对象fr为事件源
               fr.addWindowListener(new MyWindowListener());
            fr.setVisible(true);            //显示窗口
        }
    }

    六.再论事件处理机制

    1.事件、事件监听器接口、事件监听器类:
      每一类事件有一个相应的事件监听器接口,该接口定义了接收和处理事件的抽象方法。实现该接口的类,就是监听器类。其对象可作为监听器对象向相应的组件注册。
      事件的类名通常为:XxxEvent
      对应的事件监听器接口名通常为:XxxListener
      一个监听器接口定义了一种以上的抽象事件处理方法(事件处理器)。
      事件监听器类实现事件监听器接口,其类名可以由我们自己取。事件监听器类需要我们自己编写。

    2.一个组件可以注册一个或多个监听器对象,事件对象只向已注册的监听器对象报告事件的发生。

    七.事件监听器类的编写要点

    事件监听器类应该包括以下两部分内容:
    1.在事件监听器类的声明中指定要实现的监听器接口名,如:
      public class MyListener implements XxxListener {
      … }

    2.实现监听器接口中的事件处理方法,如:
      public void 事件处理方法名(XxxEvent e) {
      ...//处理某个事件的代码... }
      然后,在一个或多个组件上可以进行监听器类的实例的注册。如:组件对象.addXxxListener(MyListener对象);

     八.事件处理的编程方法总结

    要处理某GUI组件(假定为c)上发生的XXXEvent事件,其通用的编程方法是:
      编写一个监听器类,该监听器类实现了XXXListener接口,(假定监听器类的类名为MyXXXListener);
      在MyXXXListener中的相应事件处理方法中编写事件处理代码(事件处理器)。
      调用GUI组件c的addXXXListener()方法注册事件监听器对象。 c.addXXXListener(new MyXXXListener());
      要处理C上的多种事件,可以编写多个相应的监听器类,进行多次注册。也可以编写一个实现了多个监听器接口的类,进行一次注册。

    九.图形用户界面编程技巧

      通常将图形组件作为类的成员;

      将事件监听器类写成GUI类的内部类,方便对组件进行访问。

    十.监听器适配器类

    1.JAVA中提供了大部分监听器接口的适配器类,其目的是简化事件监听器类的编写,监听器适配器类是对事件监听器接口的简单实现(方法体为空),这样用户可以把自己的监听器类声明为适配器类的子类,从而可以不管其他方法,只需重写需要的方法。 对应于监听器接口XxxListener的适配器接口的类名为XxxAdapter。

    2.

    public class MouseClickHandler extends MouseAdapter{
         public void mouseClicked(MouseEvent e){ …. } 
    }

    十一.事件、接口、适配器与事件处理方法对应表

  • 相关阅读:
    如何制作挖空的填空题试卷?
    原型制图工具有哪些?
    书籍推荐?来几本吧
    离线部署ELK+kafka日志管理系统【转】
    Elasticsearch5.0 安装问题集锦【转】
    在Nginx服务器上屏蔽IP
    MySQL Warning: Using a password on the command line interface can be insecure.解决办法
    不老的神器:安全扫描器Nmap渗透使用指南【转】
    MySQL数据库设置为只读及测试【转】
    Linux中切换用户变成-bash4.1-$的解决方法
  • 原文地址:https://www.cnblogs.com/liao13160678112/p/6596218.html
Copyright © 2011-2022 走看看