Java事件机制

原创 2015年11月20日 00:31:24

1,解释;

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

2,Demo示例。(业务是发邮件)

2.1创建事件(继承java.util.EventObject)

       

package com.test.event;
import java.util.EventObject;
/**
 * 事件类,用于封装事件源及一些与事件相关的参数.
 */
public class SendEmailEvent extends EventObject
{

	private static final long serialVersionUID = -1903578788532795173L;

	private Object source;//事件源

	public SendEmailEvent(final Object source)
	{
		super(source);
		this.source = source;
	}

	public Object getSource()
	{
		return source;
	}
	public void setSource(final Object source)
	{
		this.source = source;
	}
}

2.2、事件监听器。实现java.util.EventListener接口,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调用其内部的回调方法。

package com.test.event;

import java.util.EventListener;


public class SendEmailEventListener implements EventListener
{

	//事件发生后的回调方法
	public void fireCusEvent(final SendEmailEvent e)
	{
		final SendEmailEventSource sendEmailEventSource = (SendEmailEventSource) e.getSource();
		System.out.println("My password has been changed!");
System.out.println("I got a new password, The password \"" +   sendEmailEventSource.getPassword() + "\"");
	}
}

2.3、事件源。事件发生的地方,由于事件源的某项属性或状态发生了改变(比如BUTTON被单击、TEXTBOX的值发生改变等等)导致某项事件发生。换句话说就是生成了相应的事件对象。因为事件监听器要注册在事件源上,所以事件源类中应该要有盛装监听器的容器(List,Set等等)。

package com.test.event;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
 * 事件源
 */
public class SendEmailEventSource
{
	private String password;
	//监听器容器
	private Set<SendEmailEventListener> listeners = null;

	public SendEmailEventSource()
	{
		this.listeners = new HashSet<SendEmailEventListener>();
		this.password = "password";
	}

	//给事件源注册监听器
	public void addCusListener(final SendEmailEventListener cel)
	{
		this.listeners.add(cel);
	}

	public void sendEvent()
	{
		SendEmailEventListener cel = null;
		final Iterator<SendEmailEventListener> iterator = this.listeners.iterator();
		while (iterator.hasNext())
		{
			cel = iterator.next();
			cel.fireCusEvent(new SendEmailEvent(this));
		}

	}

	/**
	 * @return the password
	 */
	public String getPassword()
	{
		return password;
	}

	/**
	 * @param password
	 *           the password to set
	 */
	public void setPassword(final String password)
	{
		this.password = password;
		sendEvent();
	}

}

2.4下面是主方法类(测试)

package com.test.event;

public class Test
{

	public static void main(final String[] args)
	{

		final SendEmailEventSource sendEmailEventSource = new SendEmailEventSource();

		//注册监听器
		sendEmailEventSource.addCusListener(new SendEmailEventListener()
		{
			@Override
			public void fireCusEvent(final SendEmailEvent e)
			{
				super.fireCusEvent(e);
			}
		});
		//触发事件
		sendEmailEventSource.setPassword("123");


	}
}





java事件处理机制

  • 2016年02月27日 00:47
  • 138KB
  • 下载

java事件处理机制Demo

  • 2016年02月06日 11:15
  • 6.45MB
  • 下载

JAVA图形界面(GUI)之事件处理机制

之前几篇博客中,我们编写了一些示例,但是这些示例并不能与读者进行交互,读者之所以对图形界面感兴趣,就是因为图形界面与读者交互能力强。但是单纯的界面是没有使用价值的,要是图形界面能与读者交流,那么必须了...

JAVA事件处理机制

  • 2013年10月11日 22:31
  • 20KB
  • 下载

双按钮双事件监听机制的简单java GUI

写在前面: 前两篇博客我们分别介绍了简单java GUI的基本结构及事件监听机制。这一次我们将介绍双事件(多事件)监听机制,并引入内部类。1.设计任务设计一个GUI,包含基本组件:按钮(两个),标签...

java中的事件机制

  • 2010年05月13日 17:13
  • 1KB
  • 下载

Java和_Net事件处理机制的比较研究

  • 2012年05月15日 09:40
  • 3.18MB
  • 下载

Java中的事件处理与异常处理机制-解析

异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java使用面向对象的方式...

java事件处理机制

  • 2012年05月11日 09:20
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java事件机制
举报原因:
原因补充:

(最多只允许输入30个字)