- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 8.5.4 GUI类和事件监听类的关系 除了例8-14以外,前面的例子都是直接将提供界面的类同时作为事件监听器类。 在复杂程序中经常是将GUI显示的类和事件处理类分离在两个类中。 这样有利于界面和业务逻辑的分离,提高了代码的灵活性和可重用性。 然而,将事件处理器和图形界面放在两个类中时,又使得两个类之间的数据交流变得复杂。 因此,经常将事件处理器类定义成GUI类的的内部类,以便事件处理器中直接访问GUI类中的成员变量。 * 例程 8-16 * 定义事件处理类时,类的命名不能和已有的的类重复,给程序员造成约束 对于一些比较简单的事件处理类,干脆把内部类的定义写到组件的事件处理器注册方法的参数列表位置,形成了“匿名内部类”。 8.5.4 GUI类和事件监听类的关系 * 例程 8-17 * * 在用户程序中要响应某个事件,捕捉某个事件并做出一些处理,要两个步骤: 首先定义一个从要处理的事件对应的事件处理器(名称通常为XXXListener)的类或者直接在主程序类中实现该(一个或多个)处理器接口; 然后在GUI组件对象上调用大多数类型的组件均有的挂接事件处理器方法(名称通常为AddXXXListener()),将定义好的事件处理器类的实例对象挂接到组件上面。 当然,要编写事件处理程序,前提是要熟悉Java AWT的事件类型体系,包括事件类型的划分、各类事件的可以挂接的组件和各种事件处理器接口的方法构成。 * 通过WindowEvent类的getWindow方法可以获取激发事件的容器类窗口(例如对话框、文件框或框架等)的标识。 * ,执行方法,执行方法。。方法。执行方法,执行方法。 * ? import java.awt.*; import java.awt.event.*; class WindowListenerDemo extends Frame implements WindowListener{ WindowListenerDemo(String title){ super(this); addWindowListener(this); setSize(100,100); setVisible(true); } public void windowOpen(WindowEvent e){ System.out.println(“window opened”); } public void windowClosing(WindowEvent e){ System.out.println(“window closing”); dispose();//使窗口在单击关闭按钮后从内存中释放 } public void windowClosed(WindowEvent e){ System.out.println(“window closed”); System.exit(0); } public void windowIconified(WindowEvent e){ System.out.println(“window iconified”); } public void windowDeiconified(WindowEvent e){ System.out.println(“window deiconified”); } public void windowActivated(WindowEvent e){ System.out.println(“window activated”); } public void windowDeactivated(WindowEvent e){ System.out.println(“window deactivated”); } public static void main(String args[]){ new WindowListenerDemo(“Window Listener Demo”); } } 注意,若在windowClosing方法中直接调用System.exit方法,将不会调用windowClosed方法,如果不在乎windowClosed方法中的代码,可以这样做。如果想要windowClosed方法被调用,则需要在windowClosing方法中执行窗口的dispose方法,然后从windowClosed方法中调用System.exit方法。另外,窗口的关闭如果要通过合适的按钮单击来实现时,调用窗口的di
您可能关注的文档
最近下载
- 餐饮值班管理课程培训.pptx
- 尔雅《批判与创意思考》课后习题+期末试题.docx VIP
- 6-4正奇租赁二期资产支持专项计划现金流预测分析报告1213日.pdf
- 算法设计与分析(北航)中国大学MOOC慕课 章节测验期末考试客观题答案.docx
- 2024年山东省济宁市中考化学试卷(附答案).docx VIP
- T IAC CAMRA 50-2024 《事故汽车常用零部件修复与更换判别规范》(2).pdf
- 北师大版数学八年级下册第六章 平行四边形 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一致性).docx
- 长江经济带港口发展研究(2011~).docx VIP
- 染色技术 8.1 涤纶结构特点和分散染料分类 8.1 涤纶结构特点、分散染料分类.pptx
- 人教版三年级下册必读书目《中国古代寓言故事》 .pdf
文档评论(0)