zoukankan      html  css  js  c++  java
  • 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();
         }
      }

  • 相关阅读:
    開始Unity3D的学习之旅
    提供一个免费的CSDN下载账号
    SIP入门(二):建立SIPserver
    设计模式之6大原则(6)开闭原则
    怎样利用App打造自明星实现自盈利
    BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解
    机房收费重构——关于面向对象和分层的纠结
    JAVA反射机制
    php实现工厂模式
    freemarker中的round、floor和ceiling数字的舍入处理
  • 原文地址:https://www.cnblogs.com/xinxindiandeng/p/1296941.html
Copyright © 2011-2022 走看看