关于java的监听器

f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.e... f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
请帮我解释一下这段具体是什么意思,我知道里面是个匿名类,但是里面这个匿名类返回的是什么,这个返回值作为f.addWindowListener( );这个括号里面的参数?
如果可以的话麻烦推荐一下java awt和swing怎么去学,看《java实用教程》(第2版)感觉挺悬乎的,解释太少
展开
 我来答
mzocean
推荐于2018-05-09 · TA获得超过1083个赞
知道小有建树答主
回答量:492
采纳率:33%
帮助的人:471万
展开全部

1、public void addWindowListener(WindowListener l)添加指定的窗口侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出任何异常,且不执行任何操作。 

这个是API中的方法定义,此方法参数为接口WindowListener,任何实现该接口的类都可以作为参数。

2、public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener

接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。

扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现
WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为
null,所以只需针对关心的事件定义方法。)

使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener
方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将
WindowEvent 传递给该方法。

3、如果我想在代码中一次性使用某个类(抽象类或具体类)或接口,可以使用匿名类的方式,这样不需自己定义一个My***类,然后再使用,比较方便。用法就是直接在new WindowAdapter()后面加入类定义,在其中实现或覆盖方法就可以了。

匿名类不是返回值,而是相当于new String(“hello”)这种的扩展形式。我觉得匿名类的最多用处就是加监听器时。

附上WindowAdapter源代码:

public abstract class WindowAdapter
    implements WindowListener, WindowStateListener, WindowFocusListener
{
    public void windowOpened(WindowEvent e) {}

    public void windowClosing(WindowEvent e) {}

    public void windowClosed(WindowEvent e) {}

    public void windowIconified(WindowEvent e) {}

    public void windowDeiconified(WindowEvent e) {}

    public void windowActivated(WindowEvent e) {}

    public void windowDeactivated(WindowEvent e) {}

    public void windowStateChanged(WindowEvent e) {}

    public void windowGainedFocus(WindowEvent e) {}

    public void windowLostFocus(WindowEvent e) {}
}
softweitao
2013-06-17 · 超过22用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:50.9万
展开全部
根据猜测f应该算是一个swing的组件,此段代码的意思是给f组件绑定窗口适配器,然后通过匿名内部类的方式监听窗口关闭事件,以响应用户的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZJX_221216
2013-06-18 · 超过19用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:41万
展开全部
意思是当你关闭窗口的时候,即windowClosing时,退出程序,System.exit(0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式