事件监听机制的深入理解

一、我们先了解下几个概念:
1.事件源
2.事件
3.事件监听者
在弄清这些概念之前先说个故事:有一个小痞子,在马路上欺负一个小女孩,小女孩向妈妈发出求救信息,妈妈那棍子来赶跑小痞子。故事就这么简单,有人会说,这太扯淡了吧,但是我想说,这个故事可以很好的帮我们理解事件处理机制。
这里小女孩就是事件源,小女孩向妈妈发出求救信息是事件,妈妈就是事件监听者。小痞子出发事件源,事件源通过事件将信息传递给事件监听者,事件监听者做出相应的反应。
二、实现一个类的基本步骤:
1.实现相应的接口(如ActionListener,KeyListener,MouseListener,WindowListener){}
如这里的Demo9_3类实现的ActionListener接口;
[/code]public class Demo9_3 extends JFrame implements ActionListener
Dog类实现的ActionListener接口
2.把接口处理的方法根据需要重新编写;
[code="java"]
public void actionPerformed(ActionEvent e){}
3.在事件源注册监听
[/code]//注册监听
jb1.addActionListener(this);
jb1.addActionListener(dog);
//指定动作指令
jb1.setActionCommand("aa");

jb2.addActionListener(this);
jb2.addActionListener(dog);
//动作指令
jb2.setActionCommand("bb");
4.事件传递靠事件对象
[code="java"]
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知道你点击了黑的按钮”。
整个源代码如下[code="java"][/code]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.setDefaultCloseOperation(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知道你点击了红的按钮");
}

}

}
}
做的很简单的一个关于事件机制理解的例子,如有不足之处请谅解。欢迎指正!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值