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); } }
相关文章推荐
- iOS入门(二十七)视图控制器UIViewController
- 25-GUI-01-GUI(概述)
- H-ui字体图标
- UITabBarController
- UIStoryboardSegue(多控制器)
- UIWindow
- iOS入门(二十四)UIView
- Version和Build的区别
- UIScrollView
- hdoj-1242-Rescue【广搜+优先队列】
- UIImageVIew
- UIButton&UILabel
- IOS第八天(4:UITableViewController新浪微博, 代码创建布局和数据转模型)
- UI初识
- Easyui 表格datagrid 的单元格内容显示方式扩展
- Easy UI的树形菜单的异步加载
- FlexBuilder远程调试WEB应用
- 控件学习---UIPageControl---摘自培训资料
- Halton Sequence 原理和代码实现
- 23-IO流-51-IO流(序列流-SequenceInputStream-枚举和迭代)