黑马程序员技术交流社区

标题: 窗口关闭打开的事件 [打印本页]

作者: 吴刚    时间: 2013-6-15 00:11
标题: 窗口关闭打开的事件
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("哈哈哈哈");
   }
   
  });
  

}
}


作者: com_heima    时间: 2013-6-15 07:45
setVisible也是有位置要求的
当执行到setVisible时,窗口已经打开,虽然监听了窗口,Activated和Opened这2个方法还没有执行到,但程序已经结束。
当把seVisible放在最后时,程序逐句执行,在执行过程中先执行 Activated和Opened这2个方法 ,之后才出现窗口。
作者: 姚志远    时间: 2013-6-15 09:46
楼上正解。也说明了程序执行是逐行进行的。
作者: 林森~Linson    时间: 2013-6-15 18:12
当然不会执行,因为是先打开窗口,你才添加对窗口打开事件的监听,所以监听不到了。
作者: 吴刚    时间: 2013-6-16 22:42
谢谢楼上几位...
作者: 孙百鑫    时间: 2013-6-22 01:38
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




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