zoukankan      html  css  js  c++  java
  • [转]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. }   
  • 相关阅读:
    Javascript是单线程的深入分析
    非阻塞式JavaScript脚本介绍
    javascript 关于函数的返回值
    javascript运算符的优先级
    JavaScript 中的 this
    javascript中关于坐标 大小 的描述
    Javascript引擎单线程机制及setTimeout执行原理说明
    回车登录页面的问题
    有关架构的若干思考
    Bootstrap3 模态框 select2搜索框无法输入
  • 原文地址:https://www.cnblogs.com/hahanonym/p/3651317.html
Copyright © 2011-2022 走看看