日期:2014-05-17  浏览次数:20638 次

关于事件监听机制的问题。求大神。

假设我有一个监听器监听到了一个事件。

监听到了,就需要调用相应的方法来处理。

如果处理的过程中,诱发的别的事件。那么会怎么样呢?

是直接去处理新的事件还是,处理完现在的事件之后再去处理新的事件。


令我纠结的是,竟然两种情况都出现了。


代码如下:



package jiakai;
import javax.servlet.*;
import javax.servlet.http.*;

public class JDTest implements HttpSessionAttributeListener{

public void attributeAdded(HttpSessionBindingEvent se) {
String name = se.getName();
HttpSession session = se.getSession();
session.removeAttribute(name);
System.out.println("ADD");

}

public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("SUB");

}

public void attributeReplaced(HttpSessionBindingEvent se) {


}



}

这个是web里面添加的Listener

我在一个Servlet中添加了一个属性。

测试结果是这样的。

SUB
ADD


说明。他先去处理了新的事件。然后回来执行刚才的事件。




还有一个测试
class MT implements TextListener , ActionListener{

public void textValueChanged(TextEvent e) {
System.out.println("VC");

}
public void actionPerformed(ActionEvent e) {
tf.setText("ttttttt");
System.out.println("P");
System.out.println("haha");
}

}

在这个监听中。如果我敲击一个回车结果却使这样的。
P
haha
VC


这说明这个个是先处理完当前的事件再去执行新的事件。




我自己猜测这可能是事件拥有优先级的原因。




有没有大神,研究过这个啊。
求解释。
求大神。

------解决方案--------------------
我下班了,明天帮你看