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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴刚 中级黑马   /  2013-6-15 00:11  /  1784 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame("纠结");
f.setLayout(new FlowLayout());
f.setSize(300, 300);
Button b = new Button("哈哈哈");
f.add(b);

f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.out.println("关闭了");
System.exit(0);
}

public void windowActivated(WindowEvent e){
System.out.println("窗口被激活了");
}

public void windowOpened(WindowEvent e)
{
System.out.println("哈哈哈哈");
}

});

f.setVisible(true);
}

}
大家注意看,不知道大家注意到这个问题没有我把红色的语句放到最后面,整个程序都执行正常,但是把程序放到前面
public void windowOpened(WindowEvent e)
{
System.out.println("哈哈哈哈");
}
这个语句就不会执行啊
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class AwtDemo {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Frame f = new Frame("纠结");
  f.setLayout(new FlowLayout());
  f.setSize(300, 300);
  Button b = new Button("哈哈哈");
  f.add(b);
f.setVisible(true);
  
  f.addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e){
    System.out.println("关闭了");
    System.exit(0);
   }
   
   public void windowActivated(WindowEvent e){
    System.out.println("窗口被激活了");
   }
   
//   public void windowOpened(WindowEvent e){
//    System.out.println("窗口打开了");
//   }
   
   public void windowOpened(WindowEvent e)
   {
    System.out.println("哈哈哈哈");
   }
   
  });
  

}
}

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

5 个回复

倒序浏览
setVisible也是有位置要求的
当执行到setVisible时,窗口已经打开,虽然监听了窗口,Activated和Opened这2个方法还没有执行到,但程序已经结束。
当把seVisible放在最后时,程序逐句执行,在执行过程中先执行 Activated和Opened这2个方法 ,之后才出现窗口。

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
楼上正解。也说明了程序执行是逐行进行的。
回复 使用道具 举报
当然不会执行,因为是先打开窗口,你才添加对窗口打开事件的监听,所以监听不到了。
回复 使用道具 举报
谢谢楼上几位...
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马