`

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事件处理机制-事件监听器的四种实现方式.docx

    ### Java事件处理机制-事件监听器的四种实现方式 在Java图形用户界面编程中,事件处理是至关重要的一环。事件监听器是用来响应特定用户动作(如按钮点击、文本输入等)的一种机制。本文将详细介绍Java中事件监听器...

    JAVA事件监听器的四种实现方式

    事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...

    JAVA事件处理机制

    总的来说,Java事件处理机制是构建交互式应用程序的关键,它通过事件源、事件和监听器的协作,实现了对用户行为的响应。事件监听器适配器进一步简化了这一过程,让开发者可以更加专注地处理应用程序的核心逻辑。理解...

    java事件处理机制

    其次,还有一种常见的方式是使用外部类作为事件监听器。在这种情况下,事件监听器类通常会独立于事件源类,它实现了相应的事件监听器接口,并且在事件源类中通过实例化这个监听器类来处理事件。虽然给定的代码没有...

    java事件处理机制ppt

    这样的事件处理机制使得Java GUI程序具有良好的可扩展性和灵活性,可以根据需要添加或移除监听器,以应对不同的用户交互需求。通过学习和掌握Java事件处理机制,开发者可以创建更富交互性的应用程序,提升用户体验。

    Java事件处理机制教学方法探讨.pdf

    此外,教师应选择一种事件监听器实现方法进行讲授,并在学生掌握之后,拓展到其他方法,让学生对比不同方法的优缺点,从而提供更全面的理解。 通过这样的教学方法,可以有效地帮助学生建立清晰的事件处理概念模型,...

    JAVA事件处理机制.ppt

    Java事件处理机制是Java开发GUI(图形用户界面)应用程序时不可或缺的部分,它使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及以下几个核心概念: 1. **事件(Event)**:事件...

    java事件处理机制Demo

    Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...

    用Java事件处理机制实现录制回放功能

    总结来说,实现Java GUI应用的录制回放功能,需要理解Java事件处理机制的原理,包括事件监听器、适配器和事件模型的演变。通过捕获和回放用户的操作,可以有效地进行自动化测试和应用演示,提高开发和调试效率。

    java事件处理机制详解

    总结来说,Java事件处理机制通过事件对象、事件源和事件监听器的协作,实现了组件间的通信和事件响应。开发者可以通过自定义事件和监听器来扩展这一机制,以适应各种复杂的交互需求。理解和掌握这一机制,对于编写...

    JavaGUI事件处理机制

    Java GUI事件处理机制是Java应用程序开发中的重要组成部分,主要用于响应用户在图形用户界面中的各种操作。这一机制采用了委托事件模型,使得程序结构清晰,易于扩展。下面将详细讲解这一机制的关键概念、工作流程...

    java事件处理机制.pdf

    ### Java事件处理机制详解 #### 一、事件处理机制概览 ...通过以上的介绍可以看出,Java的事件处理机制提供了一种强大且灵活的方式来响应用户的输入,使得开发者能够轻松地构建出具有丰富交互功能的GUI应用程序。

    JAVA事件处理指南+源码

    - Java采用基于模型-视图-控制器(MVC)的事件模型,其中事件源(如按钮)生成事件,事件监听器处理这些事件。 3. **事件类和监听器接口** - Java AWT和Swing库提供了多种事件类,如ActionEvent、MouseEvent、...

    Java的事件处理机制剖析.pdf

    本文对Java的事件处理机制进行了深入剖析,阐述了Java的事件处理模式,创建事件监听器对象的四种方法,并以JButton产生的ActionEvent事件的处理为例进行了编程说明。 一、Java事件处理模式 Java使用了基于代理的...

    Java GUI编程中的事件处理机制详细讲解 (1)

    ### Java GUI 编程中的事件处理机制详细讲解 在Java GUI编程中,事件处理机制是构建用户界面交互的核心部分。本文将围绕“Java GUI编程中的事件处理机制详细讲解(1)”这一主题展开,深入探讨组件类事件、动作类...

    事件处理监听器

    总的来说,事件处理监听器是程序响应用户交互的关键机制。通过正确设置和使用监听器,我们可以使应用程序更加互动和用户友好。在压缩包文件“事件处理”中,可能包含了各种示例代码,演示了如何在实际项目中应用这些...

    Java事件处理机制教学方法探讨.zip

    7. **事件分发机制**:Java事件模型采用多路复用(多播)的方式,一个事件可以被多个监听器处理。事件源会将事件发送给所有已注册的监听器。 8. **Swing事件与AWT事件**:虽然Swing是建立在AWT之上的,但它的事件...

Global site tag (gtag.js) - Google Analytics