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. }     
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. }    
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. }     
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. }     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值