您的位置:首页 > 产品设计 > UI/UE

25-GUI-03-GUI(事件监听机制)

2015-08-11 16:46 447 查看
/*
* 1.事件监听机制的组成
* (1)事件源(组件)
* (2)事件(Event)
* (3)监听器(Listener)
* (4)事件处理(引发事件后处理方式)
*
* (1)~(4)的关系见桌面图解文件vedio25GUI02(说明:小强被左边外力揍了,然后将该事件传递给
* 保镖,保镖是负责保护小强的,对于拳打()有对应的处理办法,对于脚踢()也有对应的处理
* 办法,所以将拳打对应的“被揍”作为参数传给拳打(),保镖做出对应的处理方式:我当,我扛。
* 同理,将脚踢对应的“被揍”作为参数传给脚踢(),保镖做出对应的处理方式:无影脚还击)
* (事件源:事件发生的载体)
* (图解中的对应关系:事件源——小强,事件——被揍,监听器——保镖,事件处理——我当我扛无影脚还击)
*
* 对应的专业术语解释见桌面截图vedio25GUI02_2(说明:外部动作必须符合监听器引发事件的动作,必须是能引发事件的动作,如
* 小强被拳打脚踢可触发保镖监听器,若小强被摸则不能触发)
*/

package demo;

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

public class GUIDemo {

public static void main(String[] args) {
//前一个视频中程序的弊端,窗体被创建后,不能点×关闭,所以需要加入事件监听机制(给Frame加保镖)

/**
* 打开API的java.awt包,点开Window类,发现其内方法:public void addWindowListener(WindowListener l)
* 添加一个窗口监听器,对于其参数WindowListener,发现是一个接口,其内有7个抽象方法。
*
* 由于我们目前只是想通过监听器来实现关闭窗口的功能,所以没必要为了一个关闭功能去实现WindowListener接口并覆盖其内所有
* 抽象方法。
*
* 对此,Java提供了一个WindowAdapter类(是接口WindowListener的子类),该类已经帮我们完成实现WindowListener接口并
* 覆盖其内所有抽象方法。
*
* 所以我们只需要继承WindowAdapter覆盖一个方法即可,不需要实现WindowListener接口并覆盖其内所有抽象方法,更加简单,
*
* 同时该类是一个抽象类,但是却没有抽象方法(以前学过:抽象类中可以没有抽象方法,为了不让该类创建对象且方便创建该接口的对
* 象,这样可以有选择性的去覆盖接口中的方法,即继承抽象类,直接复写抽象类中的方法,不用去实现接口复写接口中所有方法)
*
*/

Frame f = new Frame("My frame");

f.setBounds(200, 100, 500, 400);

f.setLayout(new FlowLayout());

Button but = new Button("一个按钮");

f.add(but);
/*
* 给f添加监听器,用匿名内部类完成,直接new一个WindowAdapter,根据自己需求,需要关闭就复写windowClosing方法,需要别的
* 功能,就复写别的方法
*/
f.addWindowListener(new WindowAdapter() {

@Override//windowClosing和windowClosed不同,后者是窗口调用 dispose 而将其关闭时调用,这里用windowClosing
public void windowClosing(WindowEvent e) {

//				System.out.println("closing...");点一次窗体的×输出一次closing...
System.exit(0);//利用这行代码可以实现点击×关闭窗体,结束程序,System.exit是退出系统
}

});

f.setVisible(true);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: