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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孔德智 中级黑马   /  2012-9-5 11:23  /  3165 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孔德智 于 2012-9-5 13:26 编辑

让窗口上的X具备关闭的功能
Frame f = new Frame( );
f. addWindowListener(new esc( ) );


class esc extends WindowAdapter

    public void windowClosing(WindowEvent e)
       {
            system.exit(0);

      }
  }



原方法代码是addWindowListener(WindowListener l)
为什么上面的重新复写代码    f. addWindowListener(new esc( ) );        括号内的参数了 l 没有了

5 个回复

倒序浏览
f. addWindowListener(new WindowAdapter(){
                        public  void windowClosing(WindowEvent e){
                                 System.exit(0);
                         }
                         
                 });建议楼主这样写代码吧,这只用了一次,用匿名内部类比较方便。
还有要设置窗口的可见性,才能关闭。f.setVisible(ture);设置可见;
回复 使用道具 举报
本帖最后由 寇龙飞 于 2012-9-5 13:21 编辑
  1. addWindowListener(WindowListener l) ;
复制代码
方法定义时,参数列表中I为形参,WindowListener 为变量I的类型。
  1. f. addWindowListener(new esc( ) );
复制代码
调用函数时,要给函数参数列表赋给实际参数,new esc( ) 就是实际参数,特别的是new esc( )是匿名的实际参数。为了便于你理解,可以写为:
  1. WindowListener wl = new esc( );
  2. f. addWindowListener(wl);
复制代码
有其它问题就再问吧,我先只说这么多。



总结一下,你问的问题就是函数问题,形式参数、实际参数,毕老师函数那块视频讲的比较简单,当时看可能懂了,用起来就费解了。回头去看下基础。
回复 使用道具 举报
寇龙飞 发表于 2012-9-5 13:17
方法定义时,参数列表中I为形参,WindowListener 为变量I的类型。调用函数时,要给函数参数列表赋给实际参 ...

谢谢你,真的懂了
回复 使用道具 举报
"原方法代码是addWindowListener(WindowListener l)
为什么上面的重新复写代码    f. addWindowListener(new esc( ) );        括号内的参数了 l 没有了 "

WindowListener是一个接口,意思是在调用addWindowListener(WindowListener l)方法时要求传入一个实现了WindowListener接口的一个类的对象(也可以使用内部类来达到同样效果),该对象所属的类要求必要实现WindowListener接口定义的所有抽象方法(其实这是废话,接口定义的方法只能是抽象方法,呵呵.).
你的esc类继承自WindowAdapter类,而WindowAdapter类实现了WindowListener接口中的所有方法(其实只是空实现,所有的方法体中没有任何代码.).所以当你的esc类继承WindowAdapter类时,你只要重写WindowAdapter类的windowClosing()方法就可以达到"点右上角的关闭按钮"就触发关闭窗口的事件,这个事件该做什么动作,就看你在重写windowClosing()方法时,在方法体中怎么写代码了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马