java事件处理机制案例

/**
 * 2018.8.26
 * 作者:小孟鱼
 * 功能:事件处理机制
 */
package com.test;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test1 extends JFrame implements ActionListener {
    
    //定义一个panel
    Mypanel mp=null;
    JButton jb1=null;
    JButton jb2=null;
    
        public static void main(String[] args) {
            Test1 test1=new Test1();    
            }
        public Test1() 
        {
            mp=new Mypanel();
            jb1=new JButton("黑色");//事件源
            jb2=new JButton("红色");//事件源
            
            this.add(jb1,BorderLayout.NORTH);
            this.add(mp);
            mp.setBackground(Color.BLACK);
            this.add(jb2,BorderLayout.SOUTH);
            
            Cat myCat=new Cat();
            
            //注册监听((这个this就是对象test1))
            jb1.addActionListener(this);

           //从jb1.addActionListener(myCat),就可以推出
            //事件源是jb1,事件的监听者就是mycat

            jb1.addActionListener(myCat);
            //指定action命令
            jb1.setActionCommand("1");
            
            jb2.addActionListener(this);
            jb2.addActionListener(myCat);
            //指定action命令
            jb2.setActionCommand("2");
            
            this.setTitle("事件处理机制");
            this.setSize(400, 300);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
        //对事件处理的方法
        public void actionPerformed(ActionEvent e) {
        
            //判断是哪个按钮被点击
            if(e.getActionCommand().equals("1"))
            {
                System.out.println("你点击黑色按钮");
                mp.setBackground(Color.BLACK);
            }else if(e.getActionCommand().equals("2"))
            {
                System.out.println("你点击红色按钮");
                mp.setBackground(Color.red);
            }else 
            {
                System.out.println("不知道");
            }
        }
            
}

//任何一个类,只要他实现了相应的接口,就可以去监听某个事件源
class Cat implements ActionListener
{

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        //判断是哪个按钮被点击
        if(arg0.getActionCommand().equals("1"))
        {
            System.out.println("猫猫也知道你点击黑色按钮");
            
        }else if(arg0.getActionCommand().equals("2"))
        {
            System.out.println("猫猫也知道你点击红色按钮");
            
        }else 
        {
            System.out.println("不知道");
        }
    }
    
}
class Mypanel extends JPanel
{
    public void paint(Graphics g)
    {
        super.paint(g);
        
    }

}


/**
 * 一个类要实现监听的步骤
 * 1.实现相应的接口【KeyListener,MouseListener,
 * ActionListener,WindowListener 】
 * 2.把接口的处理方法根据需要重新编写(重写)(override)
 * 3.在事件源注册监听
 * 4.事件传递是靠事件对象
 * 
 */

猜你喜欢

转载自blog.csdn.net/weixin_42133768/article/details/82108013