一、我们先了解下几个概念:
1.事件源
2.事件
3.事件
监听者
在弄清这些概念之前先说个故事:有一个小痞子,在马路上欺负一个小女孩,小女孩向妈妈发出求救信息,妈妈那棍子来赶跑小痞子。故事就这么简单,有人会说,这太扯淡了吧,但是我想说,这个故事可以很好的帮我们
理解事件处理机制。
这里小女孩就是事件源,小女孩向妈妈发出求救信息是事件,妈妈就是事件监听者。小痞子出发事件源,事件源通过事件将信息传递给事件监听者,事件监听者做出相应的反应。
二、实现一个类的基本步骤:
1.实现相应的
接口(如ActionListener,KeyListener,MouseListener,WindowListener){}
如这里的Demo9_3类实现的ActionListener接口;
class="java" name="code">
public class Demo9_3 extends JFrame implements ActionListener
Dog类实现的ActionListener接口
2.把接口处理的方法根据需要重新编写;
public void actionPerformed(ActionEvent e){}
3.在事件源注册监听
//注册监听
jb1.addActionListener(this);
jb1.addActionListener(dog);
//指定动作指令
jb1.setActionCommand("aa");
jb2.addActionListener(this);
jb2.addActionListener(dog);
//动作指令
jb2.setActionCommand("bb");
4.事件传递靠事件对象
public class Dog implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("aa")){
System.out.println("dog知道你点击了黑的按钮");
}else if(e.getActionCommand().equals("bb")){
System.out.println("dog知道你点击了红的按钮");
}
}
}
比如这里你可以点击黑色按钮通过dog对象触发事件,向控制台输出“dog知道你点击了黑的按钮”。
整个源代码如下
package cn.qjb;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Demo9_3 extends JFrame implements ActionListener{
//声明
JPanel mp=null;
JButton jb1=null;
JButton jb2=null;
public static void main(String[] args) {
//实例化对象
Demo9_3 demo=new Demo9_3();
}
//
构造器
public Demo9_3(){
mp=new JPanel();
jb1=new JButton("黑色");
jb2=new JButton("红色");
this.add(jb1,BorderLayout.NORTH);
mp.setBackground(Color.black);
this.add(mp);
this.add(jb2,BorderLayout.SOUTH);
//实例化一个Dog对象,一个普通的类也可以监听到
Dog dog=new Dog();
//注册监听
jb1.addActionListener(this);
jb1.addActionListener(dog);
//指定动作指令
jb1.setActionCommand("aa");
jb2.addActionListener(this);
jb2.addActionListener(dog);
//动作指令
jb2.setActionCommand("bb");
this.setSize(200, 150);
this.set
DefaultClose
Operation(3);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("aa")){
System.out.println("你点击了黑色按钮");
mp.setBackground(Color.black);
}else if(e.getActionCommand().equals("bb")){
System.out.println("你点击了红色按钮");
mp.setBackground(Color.red);
}
}
public class Dog implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("aa")){
System.out.println("dog知道你点击了黑的按钮");
}else if(e.getActionCommand().equals("bb")){
System.out.println("dog知道你点击了红的按钮");
}
}
}
}
做的很简单的一个关于事件机制理解的
例子,如有不足之处请谅解。欢迎指正!