• 【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式


    原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html

    Java中四种事件监听器的实现方式分别为: 

    1. 自身类做为事件监听器
    2. 外部类作为事件监听器
    3. 匿名内部类作为事件监听器
    4. 内部类作为事件监听器.

     

        下面分别描述:

        //---------------------------------------------------------------------

        1. 自身类作为事件监听器:

     1  import javax.swing.*;
     2  import java.awt.*;
     3  import java.awt.event.*;
     4 
     5     //ActionListener:java.awt.event.ActionListener(interface),用来监听Action事件
     6     class ThisClassEvent extends JFrame implements ActionListener
     7     { 
     8         JButton btn;  
     9 
    10         public ThisClassEvent()
    11         {
    12             super("Java事件监听机制");
    13             setLayout(new FlowLayout());
    14             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    15 
    16 
    17             btn=new JButton("点击");
    18             //addActionListerner()原型为:public void addActionListener(ActionListener l)
    19             btn.addActionListener(this);
    20             getContentPane().add(btn);
    21 
    22 
    23             setBounds(200,200,300,160);
    24             setVisible(true);
    25         }
    26 
    27 
    28         /------------------------------
    29         //actionPerformed函数是从ActionListener中继承来的.
    30 
    31         public void actionPerformed (ActionEvent e)
    32         {
    33             Container c=getContentPane();
    34             c.setBackground(Color.red);
    35         } 
    36 
    37 
    38         /------------------------------
    39         public static void main(String args[])
    40         { 
    41             new ThisClassEvent();
    42         }
    43     } 

        2. 外部类作为事件监听器:

     1   import java.awt.*; 
     2     import java.awt.event.*;
     3     import javax.swing.*;
     4 
     5 
     6     class OuterClassEvent extends JFrame
     7     { 
     8         JButton btn; 
     9         public OuterClassEvent()
    10         {
    11              super("Java事件监听机制");
    12              setLayout(new FlowLayout());
    13              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    14 
    15 
    16              btn=new JButton("点击");
    17 
    18              //addActionListerner()原型为:public void addActionListener(ActionListener l)
    19              //new OuterClass(this)是OuterClass的实例,而OuterClass是从ActionListener继承来的
    20              btn.addActionListener(new OuterClass(this));
    21              getContentPane().add(btn);
    22 
    23 
    24              setBounds(200,200,300,160);
    25              setVisible(true);
    26         }
    27 
    28 
    29         public static void main(String args[])
    30         {
    31              new OuterClassEvent();
    32         }
    33     } 
    34 
    35 
    36     //外部类------------------------------
    37 
    38     //OuterClass从ActionListener继承
    39     class OuterClass implements ActionListener
    40     {
    41          OuterClassEvent oce;
    42          public OuterClass(OuterClassEvent oce)
    43          {
    44              this.oce = oce;
    45          }
    46 
    47  
    48 
    49          //actionPerformed函数是从ActionListener中继承来的.
    50          public void actionPerformed(ActionEvent e)
    51          {
    52              Container c=oce.getContentPane();
    53              c.setBackground(Color.red);
    54          }
    55     }
    56 
    57  
    58 
    59     //---------------------------------------------------------------------

        3. 匿名内部类作为事件监听器:

     1   import java.awt.*;
     2     import java.awt.event.*;
     3     import javax.swing.*;
     4 
     5 
     6     class AnonymousEvent extends JFrame
     7     { 
     8         JButton btn;
     9 
    10 
    11         public AnonymousEvent()
    12         { 
    13             super("Java事件监听机制");
    14             setLayout(new FlowLayout());
    15             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    16 
    17 
    18             btn=new JButton("点击");
    19 
    20 
    21             //匿名内部类---------------------------
    22             //addActionListerner()原型为:public void addActionListener(ActionListener l)
    23             btn.addActionListener
    24             (
    25                 //new ActionListener()声明了ActionListener的一个实例
    26                 new ActionListener()
    27                 {
    28 
    29                     //actionPerformed函数是从ActionListener中继承来的.
    30                     public void actionPerformed(ActionEvent e)
    31                     {
    32                         Container c=getContentPane();
    33                         c.setBackground(Color.red);
    34                     }
    35                 }
    36             );
    37  
    38             //------------------------------
    39             getContentPane().add(btn); 
    40             setBounds(200,200,300,160);
    41             setVisible(true); 
    42 
    43         }
    44 
    45 
    46         public static void main(String args[])
    47         {
    48             new AnonymousEvent();
    49         }
    50     }
    51 
    52  
    53 
    54     //---------------------------------------------------------------------

        4.内部类作为事件监听器:

     1    import java.awt.*;
     2     import java.awt.event.*;
     3     import javax.swing.*;
     4 
     5 
     6     class InnerClassEvent extends JFrame
     7 
     8     { 
     9         JButton btn;
    10         public InnerClassEvent()
    11 
    12         { 
    13             super("Java事件监听机制");
    14             setLayout(new FlowLayout());
    15             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    16 
    17 
    18             btn=new JButton("点击");
    19 
    20             //addActionListerner()原型为:public void addActionListener(ActionListener l)
    21             btn.addActionListener(new InnerClass());
    22             getContentPane().add(btn);
    23 
    24 
    25             setBounds(200,200,300,160);
    26             setVisible(true);
    27         }
    28 
    29 
    30         //内部类---------------------------
    31         //InnerClass继承了ActionListener
    32         class InnerClass implements ActionListener
    33         {
    34 
    35             //actionPerformed函数是从ActionListener中继承来的.
    36             public void actionPerformed (ActionEvent e)
    37             {
    38                 Container c=getContentPane();
    39                 c.setBackground(Color.red);
    40             }
    41         }
    42 
    43  
    44         //------------------------------
    45         public static void main(String args[])
    46 
    47         {
    48             new InnerClassEvent();
    49         }
    50     }
    51 
    52     //---------------------------------------------------------------------
  • 相关阅读:
    我不知道 大家 现在 为什么 还那么费力 的 去 学习 群论
    ( 1 / x ) ^ x , x -> 无穷 的 极限 是 什么 ?
    从 庞加莱猜想 说起
    《求助吧友数学分析》 里 的 题目
    手扶拖拉机 同学 的 一些 极限题
    在 《K哥大师,我感觉那道题弄不出来》 里 的 回复
    在 《数学问题,最佳曲面求解实例》 里 的 回复
    杨辉三角开方公式 和 n次方和公式
    2016年3月31号起 随着自己的学习,我将把自己的笔记整理到博客园
    Java数据库编程、XML解析技术
  • 原文地址:https://www.cnblogs.com/SpencerLiu/p/4908757.html
Copyright © 2020-2023  润新知