java事件机制包括三个部分:事件、事件监听器、事件源

java事件机制包括三个部分:事件、事件监听器、事件源

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 listener;

public EventSourceObject(){

er = new HashSet();

= "defaultname";

}

//给事件源注册监听器

public void addCusListener(CusEventListener cel){

(cel);

}

//当事件发⽣时,通知注册在该事件源上的所有监听器做出相应的反应(调⽤回调⽅法)

protected void notifies(){

CusEventListener cel = null;

Iterator iterator = or();

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信