2023年7月9日发(作者:)
java事件机制包括三个部分:事件、事件监听器、事件源1、事件。⼀般继承⾃bject类,封装了事件源对象及跟事件相关的信息。nt类Java代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
package ;
import bject;
/**
* 事件类,⽤于封装事件源及⼀些与事件相关的参数.
* @author Eric
*/
public class CusEvent extends EventObject {
private static final long serialVersionUID = 1L;
private Object source;//事件源
public CusEvent(Object source){
super(source);
= source;
}
public Object getSource() {
return source;
}
public void setSource(Object source) {
= source;
}
}
2、事件监听器。实现istener接⼝,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调⽤其内部的回调⽅法。ntListener类Java代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
package ;
import istener;
/**
* 事件监听器,实现istener接⼝。定义回调⽅法,将你想要做的事
* 放到这个⽅法下,因为事件源发⽣相应的事件时会调⽤这个⽅法。
* @author Eric
*/
public class CusEventListener implements EventListener {
//事件发⽣后的回调⽅法
public void fireCusEvent(CusEvent e){
EventSourceObjecteObject = (EventSourceObject)rce();
n("My name has been changed!");
n("I got a new name,named ""+e()+"""); }
}
3、事件源。事件发⽣的地⽅,由于事件源的某项属性或状态发⽣了改变(⽐如BUTTON被单击、TEXTBOX的值发⽣改变等等)导致某项事件发⽣。换句话说就是⽣成了相应的事件对象。因为事件监听器要注册在事件源上,所以事件源类中应该要有盛装监听器的容器(List,Set等等)。 ourceObject类Java代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
package ;
import t;
import or;
import ;
/**
* 事件源.
* @author Eric
*/
public class EventSourceObject {
private String name;
//监听器容器
private Set
public EventSourceObject(){
er = new HashSet
= "defaultname";
}
//给事件源注册监听器
public void addCusListener(CusEventListener cel){
(cel);
}
//当事件发⽣时,通知注册在该事件源上的所有监听器做出相应的反应(调⽤回调⽅法)
protected void notifies(){
CusEventListener cel = null;
Iterator
while(t()){
cel = ();
sEvent(new CusEvent(this));
}
}
public String getName() {
return name;
}
//模拟事件触发器,当成员变量name的值发⽣变化时,触发事件。
public void setName(String name) {
if(!(name)){
= name;
notifies();
}
}
}
下⾯是主⽅法类 st类、Java代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
package ;
public class MainTest {
/**
* @param args
*/
public static void main(String[] args) {
EventSourceObject object = new EventSourceObject();
//注册监听器
Listener(new CusEventListener(){
@Override
public void fireCusEvent(CusEvent e) {
sEvent(e);
}
});
//触发事件
e("eric");
}
}
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688907241a182272.html
评论列表(0条)