• [转]Java事件处理机制- 事件监听器的四种实现方式


    原文来自http://stefan321.iteye.com/blog/345221

     

    • 自身类作为事件监听器
    • 外部类作为事件监听器
    • 匿名内部类作为事件监听器
    • 内部类作为事件监听器



    自身类作为事件监听器: 

    Java代码  收藏代码
    1. import javax.swing.*;  
    2. import java.awt.*;  
    3. import java.awt.event.*;  
    4.   
    5. /** 
    6.  *Java事件处理机制:自身类作为事件监听器 
    7.  *@author Winty(wintys@gmail.com)  
    8.  *@version 2008-12-3 
    9.  */  
    10. class ThisClassEvent extends JFrame implements ActionListener{   
    11.     JButton btn;  
    12.   
    13.     public ThisClassEvent(){  
    14.         super("Java事件监听机制");  
    15.         setLayout(new FlowLayout());  
    16.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    17.   
    18.         btn=new JButton("点击");  
    19.         btn.addActionListener(this);  
    20.         getContentPane().add(btn);  
    21.   
    22.         setBounds(200,200,300,160);  
    23.         setVisible(true);  
    24.     }  
    25.   
    26.     /**************************************/  
    27.     public void actionPerformed (ActionEvent e){  
    28.         Container c=getContentPane();  
    29.         c.setBackground(Color.red);  
    30.     }  
    31.     /**************************************/  
    32.   
    33.     public static void main(String args[]){  
    34.         new ThisClassEvent();  
    35.     }  
    36. }   




    外部类作为事件监听器: 

    Java代码  收藏代码
    1. import java.awt.*;  
    2. import java.awt.event.*;  
    3. import javax.swing.*;  
    4.   
    5. /** 
    6.  *Java事件处理机制:外部类作为事件监听器 
    7.  *@author Winty(wintys@gmail.com)  
    8.  *@version 2008-12-3 
    9.  */  
    10. class OuterClassEvent extends JFrame{   
    11.     JButton btn;  
    12.   
    13.     public OuterClassEvent(){  
    14.         super("Java事件监听机制");  
    15.         setLayout(new FlowLayout());  
    16.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    17.   
    18.         btn=new JButton("点击");  
    19.         btn.addActionListener(new OuterClass(this));  
    20.         getContentPane().add(btn);  
    21.   
    22.         setBounds(200,200,300,160);  
    23.         setVisible(true);  
    24.     }  
    25.   
    26.     public static void main(String args[]){  
    27.         new OuterClassEvent();  
    28.     }  
    29. }   
    30.   
    31. /*外部类*********************************/  
    32. class OuterClass implements ActionListener{  
    33.     OuterClassEvent oce;  
    34.   
    35.     public OuterClass(OuterClassEvent oce){  
    36.         this.oce = oce;  
    37.     }  
    38.   
    39.     public void actionPerformed(ActionEvent e){  
    40.         Container c=oce.getContentPane();  
    41.         c.setBackground(Color.red);  
    42.     }  
    43. }  




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

    Java代码  收藏代码
    1. import java.awt.*;  
    2. import java.awt.event.*;  
    3. import javax.swing.*;  
    4.   
    5. /** 
    6.  *Java事件处理机制:匿名内部类作为事件监听器 
    7.  *@author Winty(wintys@gmail.com)  
    8.  *@version 2008-12-3 
    9.  */  
    10. class AnonymousEvent extends JFrame{   
    11.     JButton btn;  
    12.   
    13.     public AnonymousEvent(){  
    14.         super("Java事件监听机制");  
    15.         setLayout(new FlowLayout());  
    16.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    17.   
    18.         btn=new JButton("点击");  
    19.         /*匿名内部类******************************/  
    20.         btn.addActionListener(  
    21.             new ActionListener(){  
    22.                 public void actionPerformed(ActionEvent e){  
    23.                     Container c=getContentPane();  
    24.                     c.setBackground(Color.red);  
    25.                 }  
    26.             }  
    27.         );  
    28.         /***************************************/  
    29.         getContentPane().add(btn);  
    30.   
    31.         setBounds(200,200,300,160);  
    32.         setVisible(true);  
    33.     }  
    34.   
    35.     public static void main(String args[]){  
    36.         new AnonymousEvent();  
    37.     }  
    38. }   



    内部类作为事件监听器: 

    Java代码  收藏代码
    1. import java.awt.*;  
    2. import java.awt.event.*;  
    3. import javax.swing.*;  
    4.   
    5. /** 
    6.  *Java事件处理机制:内部类作为事件监听器 
    7.  *@author Winty(wintys@gmail.com)  
    8.  *@version 2008-12-3 
    9.  */  
    10. class InnerClassEvent extends JFrame{   
    11.     JButton btn;  
    12.   
    13.     public InnerClassEvent(){  
    14.         super("Java事件监听机制");  
    15.         setLayout(new FlowLayout());  
    16.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    17.   
    18.         btn=new JButton("点击");  
    19.         btn.addActionListener(new InnerClass());  
    20.         getContentPane().add(btn);  
    21.   
    22.         setBounds(200,200,300,160);  
    23.         setVisible(true);  
    24.     }  
    25.   
    26.     /*内部类*********************************/  
    27.     class InnerClass implements ActionListener{  
    28.         public void actionPerformed (ActionEvent e){  
    29.             Container c=getContentPane();  
    30.             c.setBackground(Color.red);  
    31.         }  
    32.     }  
    33.     /**************************************/  
    34.   
    35.     public static void main(String args[]){  
    36.         new InnerClassEvent();  
    37.     }  
    38. }   
  • 相关阅读:
    Eclipse设置、调优、使用
    eclipse安装插件的方式 三种:links、eclipse中使用插件安装向导安装、直接copy插件到对应的eclipse目录 MyEclipse10安装SVN插件
    eclipse 在Servers窗口创建一个Tomcat 6.0 Server失败
    小技巧:帮你批量删除代码前的行号
    editplus发布3.01 Build 446 Final版(附下载及中文版)
    eclipse 垃圾回收器,内存释放
    eclipse.ini的相关说明
    Eclipse 去掉JavaScript Validator
    DropBox 超实用的免费文件网络同步、备份、分享工具
    使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
  • 原文地址:https://www.cnblogs.com/hahanonym/p/3651317.html
Copyright © 2020-2023  润新知