一个奇怪的监听器的例子,谁有兴趣看看啊!
我以前以为监听器就是时刻监听,一旦监听对象发生变化,立刻执行相应代码
可这个例子中,监听器确实是对TextArea内的值变化监听并执行了代码,但好像不是立即,我在代码中的一切变更它都不会显现出来,这个很不好啊,谁跟我说说这是为什么啊?看源码我是看不懂的呀!
程序代码:import java.awt.*;
import java.awt.event.*;
public class text1 implements TextListener {
int i=0;
Frame frame=null;
TextArea textArea=null;
public static void main(String[] args) {
new text1();
}
public text1() {
text();
System.out.println("程序执行完后 i="+i);
}
private void text() {
frame=new Frame("test");
textArea=new TextArea("");
textArea.addTextListener(this);
frame.add(textArea);
frame.setBounds(300,300,300,300);
frame.setVisible(true);
textArea.setText("fffffffff");
System.out.println("文本变化后1 i="+i);
}
public void textValueChanged(TextEvent e) {
i=1;
System.out.println("监听器生效 i="+i);
}
}按我理解,textArea.setText("fffffffff")后说明文本发生了变化,那么监听器会被触动,“文本变化后i”不就应该输出为1了吗?但不是这样的,它还是零;那么咱再等等,等到程序执行完成后,"程序执行完后 i="是不是就应该是1了,可是还不是;一直到全部执行完了,监听器才被触发,执行结果如下图: