/**
* 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.事件传递是靠事件对象
*
*/