黑马程序员技术交流社区

标题: 窗体监视事件的问题,求解惑。谢谢 [打印本页]

作者: 何仕映    时间: 2013-5-16 12:54
标题: 窗体监视事件的问题,求解惑。谢谢
本帖最后由 何仕映 于 2013-5-16 13:12 编辑

在下面的程序中定义了一个监视器,监视了三个动作。但是为什么windowOpened监视器不起作用呢?应该在窗口打开的时候,就会执行对应的操作啊。但是结果为什么那个监视器不起任何作用呢?
  1. package com.itcast;

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

  7. public class AwtDemo1 {

  8.         /**
  9.          * @param args
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                
  14.                 //新建一个边框,设置属性(大小、位置)并添加布局管理器
  15.                 Frame frame = new Frame("My Awt");
  16.                 frame.setSize(500,400);
  17.                 frame.setLocation(200,200);
  18.                 frame.setVisible(true);
  19.                 frame.setLayout(new FlowLayout());
  20.                
  21.                 //新建一个按钮并添加到窗体
  22.                 Button button = new Button("YES");
  23.                 frame.add(button);
  24.                
  25.                 //为窗体添加监视器
  26.                 frame.addWindowListener(new MyLister());
  27.                
  28.         }

  29. }
  30. //定义监视器,监视关闭、打开、变为活动窗口的操作
  31. class MyLister extends WindowAdapter {
  32.         //监视关闭
  33.         public void windowClosing(WindowEvent e){
  34.                 System.out.println(e.toString());
  35.                 System.exit(0);
  36.         }
  37.         //监视变为当前活动窗口
  38.         public void windowActivated(WindowEvent e){
  39.                 System.out.println("Activeated");
  40.         }
  41.         //监视打开
  42.         public void windowOpened(WindowEvent e){
  43.                 System.out.println("打开了");
  44.         }

  45. }
复制代码

作者: SOAR    时间: 2013-5-16 13:09
windowOpened
响应窗口首次变为可见时调用。
而你是在  frame.setVisible(true);之后才注册的窗口事件所以这个事件不会响应。
你把frame.addWindowListener(new MyLister());写在 frame.setVisible(true);之前看看。
作者: 何仕映    时间: 2013-5-16 13:12
SOAR 发表于 2013-5-16 13:09
windowOpened
是响应窗口首次变为可见时调用。
而你是在  frame.setVisible(true);之后才注册的窗口事件所 ...

果然是如此,一针见血,谢谢。
作者: 施大勇    时间: 2013-9-18 17:33
  frame.setVisible(true);
发常放在最后。




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