免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1148 | 回复: 0
打印 上一主题 下一主题

AWT事件处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-29 15:02 |只看该作者 |倒序浏览

一、基本概念
   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();
     }
    }

   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/67175/showart_715809.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP