📄 eventlistenernode.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 + -