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

来源:互联网 发布:java ssh 教程 编辑:程序博客网 时间:2024/05/29 21:17
/* * 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 而将其关闭时调用,这里用windowClosingpublic void windowClosing(WindowEvent e) {//System.out.println("closing...");点一次窗体的×输出一次closing...System.exit(0);//利用这行代码可以实现点击×关闭窗体,结束程序,System.exit是退出系统}});f.setVisible(true);}}

0 0
原创粉丝点击