java事件模型
1
import java.util.*;2
import java.awt.event.*;3

4

public class EventModelTest
{5

public static void main(String[] args)
{6
// 开始测试事件7
Demobean testbean = new Demobean();8

9
testbean.addClickListener(testbean);10

11
// 模拟一个事件(想像成在一个对象点了一下);12
testbean.Click();13
testbean.Click();14
}15
}16

17
// 事件对象,保存事件源和事件状态的信息。通常要继承EventObject,并以Event做后缀名。18

class ClickEvent extends EventObject
{19
public Demobean source; // 事件来源20
public int clickCount; // 事件状态21

22

public ClickEvent(Demobean source)
{23
// 初始化对象24
super(source);25
this.source = source;26
clickCount = 0;27
}28
}29

30
// 事件监听器,通常继承自EventListener,并以Listener做后缀名。31

interface ClickListener extends EventListener
{32
// 当事件发生时要执行的方法,可有多个。33
void Click(ClickEvent event);34
}35

36
// 事件源,也就是要挷定事件的对象(可以是Swing组件哪JButton,也可以是自定义的类型)37

class Demobean implements ClickListener
{38
private Vector clicks = new Vector();// 存储一或多个事件监听器39

40
private ClickEvent event = new ClickEvent(this);// 事件对象41

42
// 增加/订阅一个事件监听器43

public synchronized void addClickListener(ClickListener listener)
{44
clicks.add(listener);45
}46

47
// 移除/取消一个事件监听器48

public synchronized void removeClickListener(ClickListener listener)
{49
clicks.remove(listener);50
}51

52
// 处理事件程序,执行所有已经订阅的监听器中的click方法.53

protected void doClickEvent()
{54

synchronized (this)
{55

56

for (int i = 0; i < clicks.size(); i++)
{57
ClickListener listener = (ClickListener) clicks.get(i);58
event.clickCount++;59
listener.Click(event);60
}61
}62
}63

64
// 模拟一个事件(想像成在一个对象点了一下);65

public void Click()
{66
doClickEvent();67
}68

69

public void Click(ClickEvent event)
{70
// TODO Auto-generated method stub71
System.out.print("fd");72
73
}74
}原文链接:http://hi.baidu.com/rockniu/blog/item/9387753e64cca93d71cf6c31.html

浙公网安备 33010602011771号