AWT专题

官方API       http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/awt/event/package-summary.html

一、基本概念
   1、JDK中提供了AWT和Swing两个包,用于GUI程序的设计和开发
   2、GUI组件可以分为两大类:基本组件和容器,分别是java.awt.Component和java.awt.Container的直接或间接子类。
   3、程序的GUI部分由AWT线程管理,主线程结束后,AWT线程不会随着结束,要手动释放。

二、事件处理机制 
   1、三个重要的概念:
      事件:用户对组件的一个操作,称之为一个事件
      事件源:发生事件的组件就是事件源
      事件处理器:某个Java类中的负责处理事件的成员方法 

   2、事件源、事件、事件处理器之间的工作关系

三、事件分类 
   1、按产生事件的物理操作和GUI组件的表现效果进行分类:
      MouseEvent
      WindowEvent
      ActionEvent
      .......
   2、按事件的性质分类:
      低级事件(如果一个事件监听器要监听多种事件,这些事件就是低级事件)
      高级事件(语义事件)(如果一个事件监听器只监听一种事件,这个事件就是高级事件)

四、事件监听器
   1、一个事件监听器对象负责处理一类事件
   2、一类事件的每一种发生情况,分别由事件监听器对象中的一个方法来具体处理。
   3、在事件源和事件监听器对象中进行约定的接口类,被称为事件监听器接口
   4、事件监听器接口类的名称与事件类的名称是相对应的,例如,MouseEvent事件类的监听器接口名为MouseListener
   5、处理发生在某个GUI组件上的XxxEvent事件的某种情况,其事件处理的通用编写步骤如下:
      - 编写一个实现了XxxLinstener接口的事件监听器类;
      - XxxLinstener类中的用于处理该事件情况的方法中,编写处理代码;
      - 调用组件的addXxxLinstener方法,将类XxxListener创建的实例对象注册到GUI
        组件上;

五、事件适配器
    1、JDK中也提供了大多数事件监听器接口的最简单的实现类,称之为事件适配器(Adapter)类。用事件适配器来处理事件,可以简化事件监听器编写。

六、灵活设计事件监听器类
    问题:如果要在事件监听器类中访问非事件源的其他GUI组件,程序该如何写?比如,我们要在窗口中通过点击按钮关闭窗口。
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.event.ActionListener;
   
    //本身实现ActionListener接口
    public class TestFrame implements ActionListener 
    {
       Frame  f = new Frame("title");
       public void actionPerformed(ActionEvent e)
     {
         f.dispose();
     }
    
     public void init()
     {
        Button btn = new Button("ok");
        f.add(btn);
        f.setSize(300, 300);
        f.setVisible(true);
        btn.addActionListener(this);   //在按钮上添加监听器
     }
   
     public static void main(String[] args)
     {
        TestFrame tf = new TestFrame();
        tf.init();
     }
    }
   
七、用匿名内置类实现事件监听器
    上面的问题也可以通过匿名内置类来实现

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.event.ActionListener;
    
   public class TestFrame 
   {
     Frame  f = new Frame("title");
    
     public void init()
     {
        Button btn = new Button("ok");
        f.add(btn);
        f.setSize(300, 300);
        f.setVisible(true);
        btn.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e)
             {
                 f.dispose();
             }
               });
     }
   
     public static void main(String[] args)
     {
          TestFrame tf = new TestFrame();
          tf.init();
     }
  }

原文地址:https://www.cnblogs.com/xinxindiandeng/p/1296941.html