黑马程序员技术交流社区

标题: 代码练习,有句没有执行,求解释 [打印本页]

作者: 杨玉辉    时间: 2013-3-29 09:52
标题: 代码练习,有句没有执行,求解释
  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

试了几次搞不懂了,求解?
作者: 黑马-郑玉元    时间: 2013-3-29 10:02
你写的是匿名内部类!!看看重写的时候是否有错!重写方法上面加上@Override检查下是否真正重写了!
作者: 董延京    时间: 2013-3-29 10:54
Frame f = new Frame("my awt");你可以将这个Frame换成JFrame;JFrame f = new JFrame("my awt");,那么所有的事件响应就很正常了,查了半天也不知道为什么Frame不太好用。
作者: 陈腾跃_2013    时间: 2013-3-29 11:28
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~
作者: 杨玉辉    时间: 2013-3-29 12:06
陈腾跃_2013 发表于 2013-3-29 11:28
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~

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

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

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

)QTORL02R8$T1K9J@P8D8.jpg

作者: 杨玉辉    时间: 2013-3-29 12:27
董延京 发表于 2013-3-29 10:54
Frame f = new Frame("my awt");你可以将这个Frame换成JFrame;JFrame f = new JFrame("my awt");,那么所 ...

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

引用3楼的话,你试一试,看看方法错了?
作者: 董延京    时间: 2013-3-29 13:15
陈腾跃_2013 发表于 2013-3-29 11:28
呵呵,楼主试试吧 f.setVisible(true);放到监听器语句后面~

very good。{:3_59:}
作者: 陈腾跃_2013    时间: 2013-3-29 16:13
杨玉辉 发表于 2013-3-29 12:06
晕 调试的时候故意把这句写到前面的,方法又用public 修饰了,我不是怀疑老师的代码,只是想弄清楚为何放 ...

这个,真的很尴尬,因为是我之前有问过,但是没有人回(人品吗?)
http://bbs.itheima.com/thread-43248-1-1.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2