本帖最后由 陈腾跃_2013 于 2013-3-29 21:34 编辑
心血来潮,发现,如果将setVisible()方法放在监听器之前,那么“opening”是不会输出的。
1、我可以理解成这个时候监听器还没有载入么(应该是这样吧)
2、“closing”有输出,那么这个时候监听器是作为一个进程在“监听”这个事件吗?监听器在内存中?
如果是,那么监听器什么时候释放呢?
测试用的简单代码- package cty.show;
- import java.awt.FlowLayout;
- import java.awt.Frame;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- public class FrameDemo {
- public static void main(String[] args)
- {
- Frame myFrame = new Frame("Demo");
-
- myFrame.setSize(500, 400);
- myFrame.setLayout(new FlowLayout());
- System.out.println("Hello");
-
- myFrame.setVisible(true);
-
- //匿名内部类直接调用监听器
- myFrame.addWindowListener(new WindowAdapter(){
-
- public void windowOpened(WindowEvent e)
- {
- System.out.println("opening");
- }
-
- public void windowClosing(WindowEvent e)
- {
- System.out.println("closing");
- System.exit(0);
- }
- });
-
- //myFrame.setVisible(true);
- }
- }
复制代码 |