A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈腾跃_2013 中级黑马   /  2013-3-28 20:54  /  1471 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈腾跃_2013 于 2013-3-29 21:34 编辑

心血来潮,发现,如果将setVisible()方法放在监听器之前,那么“opening”是不会输出的。

1、我可以理解成这个时候监听器还没有载入么(应该是这样吧)
2、“closing”有输出,那么这个时候监听器是作为一个进程在“监听”这个事件吗?监听器在内存中?
      如果是,那么监听器什么时候释放呢?

测试用的简单代码
  1. package cty.show;

  2. import java.awt.FlowLayout;
  3. import java.awt.Frame;
  4. import java.awt.event.WindowAdapter;
  5. import java.awt.event.WindowEvent;

  6. public class FrameDemo {

  7.         public static void main(String[] args)
  8.         {
  9.                 Frame myFrame = new Frame("Demo");
  10.                
  11.                 myFrame.setSize(500, 400);
  12.                 myFrame.setLayout(new FlowLayout());
  13.                 System.out.println("Hello");
  14.                
  15.                 myFrame.setVisible(true);
  16.                
  17.                 //匿名内部类直接调用监听器
  18.                 myFrame.addWindowListener(new WindowAdapter(){
  19.                         
  20.                         public void windowOpened(WindowEvent e)
  21.                         {
  22.                                 System.out.println("opening");
  23.                         }
  24.                         
  25.                         public void windowClosing(WindowEvent e)
  26.                         {
  27.                                 System.out.println("closing");
  28.                                 System.exit(0);
  29.                         }
  30.                 });
  31.                
  32.                 //myFrame.setVisible(true);
  33.         }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

正序浏览
我是这样理解的,windowOpened这是一个动作,在本例就是窗口由无到有,只有发生了这个动作才能触发监视器,把显示放在前面后,窗口已经打开,加在window上的开启剑士器没有被触发
回复 使用道具 举报
额,鉴于上面有人提了相同的问题,本帖又没人回复,还是改成已解决吧。{:soso_e109:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马