`

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

阅读更多

 转自http://wcily123.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. }     
 import javax.swing.*;  
 import java.awt.*;  
 import java.awt.event.*;  
   
 /** 
  *Java事件处理机制:自身类作为事件监听器 
  *@author Winty(wintys@gmail.com)  
  *@version 2008-12-3 
  */  
 class ThisClassEvent extends JFrame implements ActionListener{   
     JButton btn;  
   
     public ThisClassEvent(){  
         super("Java事件监听机制");  
         setLayout(new FlowLayout());  
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
   
         btn=new JButton("点击");  
         btn.addActionListener(this);  
         getContentPane().add(btn);  
   
         setBounds(200,200,300,160);  
         setVisible(true);  
     }  
   
     /**************************************/  
     public void actionPerformed (ActionEvent e){  
         Container c=getContentPane();  
         c.setBackground(Color.red);  
     }  
     /**************************************/  
   
     public static void main(String args[]){  
         new ThisClassEvent();  
     }  
 }   
 

 

外部类作为事件监听器 :

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. }    
 import java.awt.*;  
 import java.awt.event.*;  
 import javax.swing.*;  
   
 /** 
  *Java事件处理机制:外部类作为事件监听器 
  *@author Winty(wintys@gmail.com)  
  *@version 2008-12-3 
  */  
 class OuterClassEvent extends JFrame{   
     JButton btn;  
   
     public OuterClassEvent(){  
         super("Java事件监听机制");  
         setLayout(new FlowLayout());  
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
   
         btn=new JButton("点击");  
         btn.addActionListener(new OuterClass(this));  
         getContentPane().add(btn);  
   
         setBounds(200,200,300,160);  
         setVisible(true);  
     }  
   
     public static void main(String args[]){  
         new OuterClassEvent();  
     }  
 }   
   
 /*外部类*********************************/  
 class OuterClass implements ActionListener{  
     OuterClassEvent oce;  
   
     public OuterClass(OuterClassEvent oce){  
         this.oce = oce;  
     }  
   
     public void actionPerformed(ActionEvent e){  
         Container c=oce.getContentPane();  
         c.setBackground(Color.red);  
     }  
 }  
 

 

 

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

 

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. }     
 import java.awt.*;  
 import java.awt.event.*;  
 import javax.swing.*;  
   
 /** 
  *Java事件处理机制:匿名内部类作为事件监听器 
  *@author Winty(wintys@gmail.com)  
  *@version 2008-12-3 
  */  
 class AnonymousEvent extends JFrame{   
     JButton btn;  
   
     public AnonymousEvent(){  
         super("Java事件监听机制");  
         setLayout(new FlowLayout());  
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
   
         btn=new JButton("点击");  
         /*匿名内部类******************************/  
         btn.addActionListener(  
             new ActionListener(){  
                 public void actionPerformed(ActionEvent e){  
                     Container c=getContentPane();  
                     c.setBackground(Color.red);  
                 }  
             }  
         );  
         /***************************************/  
         getContentPane().add(btn);  
   
         setBounds(200,200,300,160);  
         setVisible(true);  
     }  
   
     public static void main(String args[]){  
         new AnonymousEvent();  
     }  
 }   

 

 

 

内部类作为事件监听器:

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. }     
分享到:
评论

相关推荐

    计算器的实现java

    2、用事件监听器处理事件--------------------------------4 第四章 图形用户界面GUI--------------------------------5 1、菜单------------------------------------------------5 2、panel类--------------------...

    java源码包---java 源码 大量 实例

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java--图形用户界面的事件处理

    章节目标: 掌握图形用户界面事件处理机制 掌握Swing实现事件处理 掌握匿名类、内部类 实现多监听器

    Java-GUI-设计与实现.pptx.pptx

    Java GUI编程基础概述 Java GUI编程基础是Java编程语言中的重要组成部分,它提供了丰富的工具和接口...Java GUI事件处理机制是实现交互性的关键,通过监听和响应用户的操作,可以实现界面的动态更新和功能的逻辑处理。

    深入探索Spring事件监听机制:技术与应用

    这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)三个主要组成部分构成。 事件是发生的动作或事情,其核心是ApplicationEvent...

    从Java的角度来讲解C#的代理、事件和事件句柄的原理

    所以,本人根据Java的监听器概念实现的观察者模式,重新用C#代码来描述了C#的难点技术--代理、事件、事件句柄--^_^...希望能够给C#的fan们带来帮助。 阅读条件:熟悉C#语言,会使用csc命令。 阅读人员:非常熟悉...

    java listener监听器教程及实例

    我们在编写JSP/Servle程序时,有相应的事件处理机制,在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--监听之单击监听的两种定义 |--监听之双击监听 |--监听之电话状态监听 |--监听之触摸监听 |--短信之根据id删除及查询短信 |--短信发送小demo |--短信的截取 |--系统之SD卡清理 |--系统之获取所有开机启动应用 |--...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java Spring框架面试题大全

    开发者可以自定义事件类和事件监听器,并通过应用程序上下文的publishEvent方法来发布事件,Spring框架会自动分发事件给所有对该事件感兴趣的监听器进行处理。事件监听机制帮助开发者更好地解耦代码,提高应用程序的...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...

    Android实验5-事件处理答案.doc

    实验5 事件处理 二、实验日期: 三、实验目的: 基于监听的事件处理 基于回调的事件处理 四、实验用的仪器和材料:Windows+Eclipse+jdk+sdk+adt 五、实验的步骤和方法: 实验一:基于监听的事件处理机制 Activity....

    spring事件扩展

    机制通知异常监听器进行处理。在笔者的一个项目中,就曾经借助事件机制,较好的实现了当系统 异常时在监视终端上报警,同时发送报警SMS至管理员手机的功能。 */ public class LoginAction implements ...

    java源码包4

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java程序设计填空题题库49道

    46. AWT的事件处理机制包括_______、事件和事件监听者。 答案:事件源 [考点范围] 图形用户界面 47. Swing的顶层容器有________、JApplet、JWwindow和JDialog。 答案:JFrame [考点范围] 图形用户界面 48. 线程的...

    java源码包3

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java开发技术大全(500个源代码).

    listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的...

Global site tag (gtag.js) - Google Analytics