在java中如何自定义和实现自己的事件?

MAX°孟兆 2005-03-17 12:19:25
像java内置提供一事件(如MouseEvent)那样,在系统开发过程也会遇到这样的需求,需要为系统自定义一些特殊的事件.在某个条件下激发.
在JAVA中这种功能如何实现?
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2005-06-20
  • 打赏
  • 举报
回复
你这个例子可以达到目的,

只是 把 事件广播和处理都 Point 一个人干了, 如果分离出来能更好的说明问题,
如果什么都一个类自己做而且做的都还是直接关系自己的属性的话 ,
用监视器至少在这个例子中是多此一举.

一般听众可以用集合来表示,更好地表达出 Point 并不知道有多少人关注它, 在属性改变时它只管
广播事件( 对注册了的监视器都逐一通知 ), 以便更好地分离出事件监视器的职责.
humanity 2005-06-20
  • 打赏
  • 举报
回复
这个不是可以达到目的么?

Listener 本应该 是外挂的, Point 本身并不知道谁将处理事件, 它只管在属性改变时广播事件( 不管哪个听众注册到 Point 上,都通知他.) ,

上面的例子中事件的广播和处理都被 Point 一个人干了,所以作为初学讲解材料不太适当.

最好分开来, 事件的听众也可以用集合来表示,这样更好表达出事件发生时 , 被监听对象 Point 并不知道多少关注它,这样你就很自觉得分离事件处理功能.
hq_gmn 2005-06-20
  • 打赏
  • 举报
回复
up!up!
csdn_bob 2005-04-07
  • 打赏
  • 举报
回复
UP
csdn_bob 2005-04-07
  • 打赏
  • 举报
回复
楼上的兄弟,是否可以举个例子?
interface PointChangeListener extends java.util.EventListener{
public void Changed(PointChangeEvent e);
}

class PointChangeEvent extends java.util.EventObject{
private Point x;

PointChangeEvent(Point x){
super(x);
this.x = x;
}

public Object getSource() {
return x;
}

public Point getPoint(){
return this.x;
}
}


class Point implements PointChangeListener{
private int x,y;
Point(int x,int y){
this.x = x;
this.y = y;
}

public void setX(int x){
this.x = x;
this.Changed(new PointChangeEvent(this));
}
public void setY(int y){
this.y = y;
this.Changed(new PointChangeEvent(this));
}

public void Changed(PointChangeEvent e){
System.out.println(e.getPoint().x);
System.out.println(e.getPoint().y);
}

}

class EventUsed{
public static void main(String[] args){
Point p = new Point(1,2);
p.setX(3);
}
}

我感觉上面的程序并没有实际让事件处理方法与激发事件的方法分离,这样的话我就不太理解了。
dudee 2005-04-07
  • 打赏
  • 举报
回复
extends
csdn_bob 2005-04-07
  • 打赏
  • 举报
回复
up.....
shendiaodaxia 2005-03-17
  • 打赏
  • 举报
回复
可以自定义类,包含你要处理的事件就可以了,可以找找相关的书籍来想看看。
loucai 2005-03-17
  • 打赏
  • 举报
回复
up

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧