zoukankan      html  css  js  c++  java
  • 【转】转帖并注释: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~n有多少个1
    C语言常用字符串函数
    C语言类型转换原理
    printf()函数压栈a++与++a的输出
    49 丑数( 时间空间效率的平衡)
    42 连续子数组的最大和(时间效率)
    41 数据流中的中位数(时间效率)
    40 最小的K个数(时间效率)
    一、简介 ELO商户类别推荐有助于了解客户忠诚度
  • 原文地址:https://www.cnblogs.com/SpencerLiu/p/4908757.html
Copyright © 2011-2022 走看看