随笔 - 54  文章 - 0  评论 - 1  阅读 - 46463

[转]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. }   
posted on   hahanonym  阅读(326)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示