您好,欢迎访问一九零五行业门户网

什么是java事件

java事件机制包括三个部分:事件、事件源、事件监听器。
1、事件
事件一般继承自java.util.eventobject类,封装了事件源对象及跟事件相关的信息。
import java.util.eventobject; /** * 事件类,用于封装事件源及一些与事件相关的参数. */ public class cusevent extends eventobject { private static final long serialversionuid = 1l; private object source;//事件源 public cusevent(object source){ super(source); this.source = source; } public object getsource() { return source; } public void setsource(object source) { this.source = source; } }
2、事件源
事件源是事件发生的地方,由于事件源的某项属性或状态发生了改变(比如button被单击、textbox的值发生改变等等)导致某项事件发生。换句话说就是生成了相应的事件对象。因为事件监听器要注册在事件源上,所以事件源类中应该要有盛装监听器的容器(list、set等等)。
/** * 事件源. */ public class eventsourceobject { private string name; //监听器容器 private set<cuseventlistener> listener; public eventsourceobject(){ this.listener = new hashset<cuseventlistener>(); this.name = "defaultname"; } //给事件源注册监听器 public void addcuslistener(cuseventlistener cel){ this.listener.add(cel); } //当事件发生时,通知注册在该事件源上的所有监听器做出相应的反应(调用回调方法) protected void notifies(){ cuseventlistener cel = null; iterator<cuseventlistener> iterator = this.listener.iterator(); while(iterator.hasnext()){ cel = iterator.next(); cel.firecusevent(new cusevent(this)); } } public string getname() { return name; } //模拟事件触发器,当成员变量name的值发生变化时,触发事件。 public void setname(string name) { if(!this.name.equals(name)){ this.name = name; notifies(); } } }
3、事件监听器
事件监听器实现java.util.eventlistener接口,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调用其内部的回调方法。
import java.util.eventlistener; /** * 事件监听器,实现java.util.eventlistener接口。定义回调方法,将你想要做的事 * 放到这个方法下,因为事件源发生相应的事件时会调用这个方法。 */ public class cuseventlistener implements eventlistener { //事件发生后的回调方法 public void firecusevent(cusevent e){ eventsourceobjecteobject = (eventsourceobject)e.getsource(); system.out.println("my name has been changed!"); system.out.println("i got a new name,named \""+eobject.getname()+"\""); } }
测试类
public class maintest { public static void main(string[] args) { eventsourceobject object = new eventsourceobject(); //注册监听器 object.addcuslistener(new cuseventlistener(){ @override public void firecusevent(cusevent e) { super.firecusevent(e); } }); //触发事件 object.setname("ailu"); } }
4、事件、事件源、监听器三者之间的联系
事件源-----产生----->事件------>被事件监听器发现------>进入事件处理代码
import java.awt.frame;import java.awt.event.windowadapter;import java.awt.event.windowevent;public class demoaction extends frame {//窗口就是事件源 public demoaction() { this.settitle("窗口关闭"); this.setlocation(400, 200); this.setsize(360, 280); //给窗口绑定一个事件监听器 this.addwindowlistener(new windowadapter() { @override public void windowclosing(windowevent e) {//事件windowevent system.exit(0);//关闭窗口事件, 那么退出jvm } }); this.setvisible(true); } public static void main(string[] args) { new demoaction(); }}
5、事件处理的主要步骤:
(1)生成监听器;
(2)在发生事件的对应组件上注册监听器;
(3)注册监听器的组件上发生事件时,将事件对象返回给监听器;
(4)监听器调用相应方法处理事件。
代码示例:
public class loginlistener implements actionlistener{string text;public void actionperformed(actionevent e){if("willow".equals(text)){system.out.println("登录成功!\n");}}}public class login(){public void showframe(){//创建窗体jframe lframe = new jframe();lframe.setsize(1000,800);lframe.setlocationrelativeto(null);lframe.setdefaultcloseoperation(jframe.exit_on_close);lframe.setlayout(new flowlayout());//创建监听器对象loginlistener lg = new loginlistener();//给窗体添加按钮组件jtextfield tf = new jtextfield();lframe.add(tf);//给输入框添加监听器tf.addactionlisener(lg);tf.text=tf.gettext();}};
众多java培训视频,尽在,欢迎在线学习!
以上就是什么是java事件的详细内容。
其它类似信息

推荐信息