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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨玉辉 中级黑马   /  2013-3-29 09:52  /  2237 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.awt.*;
  2. import java.awt.event.*;

  3. class AwtDemo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Frame f = new Frame("my awt");
  8.                 f.setSize(300,160);
  9.                 f.setLocation(300,200);
  10.                 f.setLayout(new FlowLayout());
  11.                
  12.                 Button b = new Button("Who are you");
  13.                 f.add(b);
  14.                 f.setVisible(true);
  15.         
  16.                 f.addWindowListener(new WindowAdapter(){
  17.                         public void windowClosing(WindowEvent e){
  18.                                 System.out.println("window closed");
  19.                                 System.exit(0);
  20.                         }
  21.                         public void windowActivated(WindowEvent e){
  22.                                 System.out.println("Activated window");
  23.                         }
  24.                         public void windowOpened(WindowEvent e){
  25.                                 System.out.println("aaaaaa,to be opened");
  26.                         }

  27.                 });
  28.         }
  29. }
复制代码

          public void windowOpened(WindowEvent e){
                                        System.out.println("aaaaaa,to be opened");
                        }
这句为何没有执行,而且有的时候,一运行,第二句,有时候没出现 Activated window

试了几次搞不懂了,求解?

评分

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

查看全部评分

8 个回复

倒序浏览
你写的是匿名内部类!!看看重写的时候是否有错!重写方法上面加上@Override检查下是否真正重写了!
回复 使用道具 举报
Frame f = new Frame("my awt");你可以将这个Frame换成JFrame;JFrame f = new JFrame("my awt");,那么所有的事件响应就很正常了,查了半天也不知道为什么Frame不太好用。
回复 使用道具 举报
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~

评分

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

查看全部评分

回复 使用道具 举报
陈腾跃_2013 发表于 2013-3-29 11:28
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~

晕 调试的时候故意把这句写到前面的,方法又用public 修饰了,我不是怀疑老师的代码,只是想弄清楚为何放前面,就只是监听windowClosing(),windowActivated(),却不在监听 windowOpened()

而且 把上述代码编译一次,多运行几次的话,为何还会出现类似的,没有输出Activated window 如图

)QTORL02R8$T1K9J@P8D8.jpg (23.22 KB, 下载次数: 43)

)QTORL02R8$T1K9J@P8D8.jpg
回复 使用道具 举报
董延京 发表于 2013-3-29 10:54
Frame f = new Frame("my awt");你可以将这个Frame换成JFrame;JFrame f = new JFrame("my awt");,那么所 ...

你这个需要做什么处理吧,要不报错了呀!
回复 使用道具 举报
黑马-郑玉元 发表于 2013-3-29 10:02
你写的是匿名内部类!!看看重写的时候是否有错!重写方法上面加上@Override检查下是否真正重写了! ...

引用3楼的话,你试一试,看看方法错了?
回复 使用道具 举报
陈腾跃_2013 发表于 2013-3-29 11:28
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~

very good。{:3_59:}
回复 使用道具 举报
杨玉辉 发表于 2013-3-29 12:06
晕 调试的时候故意把这句写到前面的,方法又用public 修饰了,我不是怀疑老师的代码,只是想弄清楚为何放 ...

这个,真的很尴尬,因为是我之前有问过,但是没有人回(人品吗?)
http://bbs.itheima.com/thread-43248-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马