在网上找了好一会怎么监听一个事件的发生,找了好一会才找到符合我要求的信息,整体下分享下:
监听事件可以分为三个过程
1、事件:扩展EventObject
import java.util.EventObject;
public class receivedEvent extends EventObject {
public receivedEvent(Object source) {
this(source,0);
}
public receivedEvent(Object source, int newValue) {
super(source);
}
}
2、观察:扩展EventListener
import java.util.EventListener;
public interface receivedListener extends EventListener {
public abstract void performed(receivedEvent e);
}
3、侦听
public class Handle extends IoHandlerAdapter {
static public Vector aListeners = new Vector();
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// 当MessageCode为ESB信息更新时才发生
if (Integer.parseInt(message.toString()) == SkymobiMessageCode.MSGCODE_MGMT_UPDATE_ESBINFO_NFY) {
receivedEvent evt = new receivedEvent(this);
// 如果值改变的话,就触发事件
fireAEvent(evt);
}
}
public void fireAEvent(receivedEvent evt) {
Vector currentListeners = null;
synchronized (this) {
currentListeners = (Vector) aListeners.clone();
}
System.out.println(currentListeners.size());
for (int i = 0; i < currentListeners.size(); i++) {
receivedListener listener = (receivedListener) currentListeners
.elementAt(i);
listener.performed(evt);
}
}
}
4、程序运行处加入
Handle.addAListener(new receivedListener() {
public void performed(receivedEvent e) {
System.out.println("此处添加ESB更新后的相应函数");
}
});
这应当MessageReceived事情发生时,且满足要求时,事情就发生了