一个奇怪的监听器的例子,谁有兴趣看看啊!
text1.rar
(833 Bytes)
我以前以为监听器就是时刻监听,一旦监听对象发生变化,立刻执行相应代码
可这个例子中,监听器确实是对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了,可是还不是;一直到全部执行完了,监听器才被触发,执行结果如下图: