//定义事件和对应的委托
public event MyDelegate Click;
public delegate void MyDelegate();
//定义委托
void OnClick(){
console.writeline("you just clicked me!");
}
//将委托与事件关联
Click += OnClick;
//触发事件
Click();
/*事件类*/
public Event {
//与事件相关的事件处理函数
public ArrayList<Callback> callbackList;
//事件触发函数
public void emit(){
for(Callback cb : callbackList){
cb.run();
}
}
//注册事件处理函数
public registerCallback(Callback cb){
callbackList.add(cb);
}
}
/*事件处理函数类*/
public interface Callback {
void run();
}
public OnClick implements Callback {
//函数
public void run(){
System.out.println("you just clicked me!");
}
/*实现事件驱动*/
Event e = new Event();
//将OnClick事件处理函数注册到事件中
e.registerCallback(new OnClick());
//触发事件
e.emit();
/*事件处理类*/
public class EventHandler {
//事件源
private Object sender;
//事件处理函数名称(用于反射)
private String callback;
public EventHandler(Object sender, String callback){
this.sender = sender;
this.callback = callback;
}
//事件触发
public void emit(){
Class senderType = this.sender.getClass();
try {
//获取并调用事件源sender的事件处理函数
Method method = senderType.getMethod(this.callback);
method.invoke(this.sender);
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
/*事件源*/
public class Button(){
/*可以在此设置Button类的相关属性,比如名字等*/
private String name;
...
//事件处理函数
public void onClick(){
System.out.println("you just clicked me!");
}
}
/*实现事件驱动机制*/
Button b = new Button();
if(/*收到按钮点击信号*/){
EventHandler e = new EventHandler(b, "onClick");
e.emit();
}
public class EventArgs {
//参数
String p1;
Integer p2;
...
}
//onClick事件处理函数改写
public void onClick(Object sender, EventArgs e){
//参数e提供更多的信息
System.out.println("Hello, you clicked me! " + e.p1 + e.p2);
}
//触发函数emit改写
public void emit(EventArgs e){
Class senderType = this.sender.getClass();
try {
//获取并调用事件源sender的事件处理函数
Method method = senderType.getMethod(this.callback, this.getClass(), e.getClass());
method.invoke(this.sender, this.sender, e);
} catch (Exception e2) {
e2.printStackTrace();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有