欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java事件处理机制- 事件监听器的四种实现方式 博客分类: J2SE学习 JavaSwingGmailCC++

程序员文章站 2024-02-17 08:36:40
...
  • 自身类作为事件监听器
  • 外部类作为事件监听器
  • 匿名内部类作为事件监听器
  • 内部类作为事件监听器


自身类作为事件监听器:
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();
    }
} 



外部类作为事件监听器:

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);
    }
}



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

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();
    }
} 


内部类作为事件监听器:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *Java事件处理机制:内部类作为事件监听器
 *@author Winty(wintys@gmail.com) 
 *@version 2008-12-3
 */
class InnerClassEvent extends JFrame{ 
    JButton btn;

    public InnerClassEvent(){
        super("Java事件监听机制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("点击");
        btn.addActionListener(new InnerClass());
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    /*内部类*********************************/
    class InnerClass implements ActionListener{
        public void actionPerformed (ActionEvent e){
            Container c=getContentPane();
            c.setBackground(Color.red);
        }
    }
    /**************************************/

    public static void main(String args[]){
        new InnerClassEvent();
    }
}