- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章节图形用户界面
8.6.2 Java的常用事件接口与接口方法 Java将所有组件可能发生的事件进行了分类,具有共同特征的事件被抽象为一个事件类Event或事件接口。它们用来处理该类组件发生的事件。 事件接口类中定义了一些抽象的方法来统一处理某一类事件,因此在设计事件监听器类时必须实现或覆盖这些抽象处理方法。 Java定义的常用事件类和事件接口如表所示(见课本P173)。 1.通过自定义内部类创建监听器对象 例8.15 本程序在窗口上创建了一个按钮和一个标签,用鼠标单击按钮时,会听到一声响声。如图所示。 执行单击事件的窗口 8.6.3 事件处理机制的不同实现方式 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class JB1 extends JFrame{ public JB1(JFrame f,JPanel p) { f.add(p); //将面板p加入到窗口f中 p.add(new Label(按一下按钮可听到响声!, Label.CENTER)); Button b=new Button(按钮); p.add(b); BHandler h = new BHandler();// 创建事件监听器对象 b.addActionListener (h); // 注册事件监听器对象} public static void main(String[] args) { JB1 f1 = new JB1(new JF0(单击按钮事件),new JPanel()); } private class BHandler implements ActionListener{ public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit ().beep(); } } } 说明: (1)在应用程序头部要引入系统事件类包java.awt.event.*。 (2)本程序在类JB1中设计了一个自定义内部类BHandler,在类中实现单击事件监听器接口ActionListener的actionPerformed事件接口方法,即编写事件处理代码以响应事件的发生。当单击按钮时,系统将产生ActionEvent事件对象e,事件监听器对象传递e给actionPerformed方法处理这个事件。 (3)根据类BHandler可以创建监听器对象h并注册给按钮对象b。 单击事件类ActionEvent有以下一些常用方法: (1)public String getActionCommand() 可返回事件源的标签。如b的标签是“按钮”。 (2)public Object getSource() 返回产生事件的对象名,如b。 (3)public int getModifiers 返回事件发生时功能控制键的状态,它们可能是功能键常数SHIFT_MASK、CTRL_MASK、ALT_MASK。 2.在注册时通过匿名类直接创建监听器对象 例8.16 本程序运行结果与图相同。仅用来说明创建监听器的方式。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class JB2 extends JFrame{ public JB2(JFrame f,JPanel p) { f.add(p); //将面板p加入到窗口f中 p.add(new Label(按一下按钮可听到响声!, Label.CENTER)); Button b=new Button(按钮); p.add(b); // 注册事件监听器对象 b.addActionListener (new ActionListener(){ public void actionPerformed(ActionEvent e){ Toolkit.getDefaultToolkit ().beep(); } }); } public static void main(String[] args) { JB2 f1 = new JB2(new JF0(单击按钮事件),new JPanel());} 说明: 在例8.16中使用了匿名类,匿名类是指在声明一个类时不给它命名的类。 例8.16取消了例8.15中的ActionListener的子类BHandler的创建过程,直接将这个子
文档评论(0)