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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何仕映 中级黑马   /  2013-5-16 12:54  /  1351 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何仕映 于 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. }
复制代码

3 个回复

倒序浏览
windowOpened
响应窗口首次变为可见时调用。
而你是在  frame.setVisible(true);之后才注册的窗口事件所以这个事件不会响应。
你把frame.addWindowListener(new MyLister());写在 frame.setVisible(true);之前看看。
回复 使用道具 举报
SOAR 发表于 2013-5-16 13:09
windowOpened
是响应窗口首次变为可见时调用。
而你是在  frame.setVisible(true);之后才注册的窗口事件所 ...

果然是如此,一针见血,谢谢。
回复 使用道具 举报
  frame.setVisible(true);
发常放在最后。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马