⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventlistenernode.java

📁 一个“对象--XML 映射”(Object-Xml Mapping) 的类库。 它的目的是帮助开发者方便、快速的从XML 文件构建出Java 对象
💻 JAVA
字号:
/**
 * @author 沈东良 Edward Shen<a href="mailto:shendl_s@hotmail.com">shendl_s@hotmail.com</a>
 * 2007-8-7 下午03:10:14
 */
package net.sf.oxmled.model;

import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;

import net.sf.oxmled.common.util.IEventListenerRegistry;

/**
 * @author 沈东良 Edward Shen<a href="mailto:shendl_s@hotmail.com">shendl_s@hotmail.com</a>
 * 2007-8-7 下午03:10:14
 *    EventListenerNode类,是可以被ChangeListener接口的实现类监听的Node类。
 *    ChangeListener监听器能够注册在它上面。  当EventListenerNode对象的数据发生变化时,
 *    可以通过调用fireStateChanged方法,通知注册在其上的所有监听器。
 *   
 * 使用EventListenerNode类,可以让业务逻辑监听xml数据的变化,从而更新业务逻辑。
 *    这能够大大方便业务逻辑的设计和使用。
 *    
 *      也可以,同时实现ChangeListener接口,互相监听。
 */
public class EventListenerNode extends Node implements IEventListenerRegistry{
	///////////////////////构造器
	/**
	 * 
	 */
	public EventListenerNode() {
		/*
		 *
		 */
	}

	/**
	 * @param name
	 */
	public EventListenerNode(String name) {
		super(name);
		/*
		 *
		 */
	}

	/**
	 * @param name
	 * @param text
	 */
	public EventListenerNode(String name, String text) {
		super(name, text);
		/*
		 *
		 */
	}
//////////////////////////////////////////
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/*
		 *
		 */

	}
	//////////////////////////////被监听器///////////////////
////////////////////////观察者模式
	
	  /**
	   * 事件列表ChangeListener
	   */
	  private EventListenerList listenerList = new EventListenerList();
	  /**
	   * 数据改变监听器
	   */
	  private ChangeEvent changeEvent=null;
     
	  /* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#addChangeListener(javax.swing.event.ChangeListener)
	 */
	public void addChangeListener(ChangeListener changeListener){
		  
		  this.getListenerList().add(ChangeListener.class, changeListener);
		  
	  }
	  
	  /* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#removeChangeListener(javax.swing.event.ChangeListener)
	 */
	public void removeChangeListener(ChangeListener changeListener){
		  this.getListenerList().remove(ChangeListener.class, changeListener);
		  
	  }
	  /* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#fireStateChanged()
	 */
	 public void fireStateChanged(){
		  // Guaranteed to return a non-null array
		     Object[] listeners = listenerList.getListenerList();
		     // Process the listeners last to first, notifying
		     // those that are interested in this event
		     for (int i = listeners.length-2; i>=0; i-=2) {
		         if (listeners[i]==ChangeListener.class) {
		             // Lazily create the event:
		             if (this.getChangeEvent() == null){
		            	 //创建改变事件,事件源是 被监听器--自己 本身
		                 this.setChangeEvent(new ChangeEvent(this));
		             }
		             //调用注册在上面的监听器的stateChanged方法。
		             ((ChangeListener)listeners[i+1]).stateChanged(this.getChangeEvent());
		         }
		     }

	  
	  
	  }
	
	
////////////////////////////////////////

	/* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#getListenerList()
	 */
	public EventListenerList getListenerList() {
		return listenerList;
	}

	/* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#setListenerList(javax.swing.event.EventListenerList)
	 */
	public void setListenerList(EventListenerList listenerList) {
		this.listenerList = listenerList;
	}

	/* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#getChangeEvent()
	 */
	public ChangeEvent getChangeEvent() {
		return changeEvent;
	}

	/* (non-Javadoc)
	 * @see net.sf.oxmled.model.IEventListenerRegistry#setChangeEvent(javax.swing.event.ChangeEvent)
	 */
	public void setChangeEvent(ChangeEvent changeEvent) {
		this.changeEvent = changeEvent;
	}
	
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -