控制台程序。

适配器类是指实现了监听器接口的类,但监听器接口中的方法没有内容,所以它们什么也不做。背后的思想是:允许从提供的适配器类派生自己的监听器类,之后再实现那些自己感兴趣的类。其他的空方法会从适配器类中继承,所以无须担心它们。

修改上一文中的Sketcher类如下:

 1 // Sketching application
 2 import javax.swing.*;
 3 import java.awt.*;
 4 import java.awt.event.*;
 5
 6 public class Sketcher {
 7   public static void main(String[] args) {
 8      theApp = new Sketcher();                                          // Create the application object
 9    SwingUtilities.invokeLater(new Runnable() {
10             public void run() {
11               theApp.createGUI();                                      // Call GUI creator
12             }
13         });
14   }
15
16   // Method to create the application GUI
17   private void createGUI() {
18     window = new SketcherFrame("Sketcher");                            // Create the app window
19     Toolkit theKit = window.getToolkit();                              // Get the window toolkit
20     Dimension wndSize = theKit.getScreenSize();                        // Get screen size
21
22     // Set the position to screen center & size to half screen size
23     window.setSize(wndSize.width/2, wndSize.height/2);                 // Set window size
24     window.setLocationRelativeTo(null);                                // Center window
25
26     window.addWindowListener(new WindowHandler());                     // Add window listener
27     window.setVisible(true);
28   }
29
30   // Handler class for window events
31   class WindowHandler extends WindowAdapter {
32     // Handler for window closing event
33     @Override
34     public void windowClosing(WindowEvent e) {
35       window.dispose();                                                // Release the window resources
36       System.exit(0);                                                  // End the application
37     }
38   }
39
40   private SketcherFrame window;                                        // The application window
41   private static Sketcher theApp;                                      // The application object
42 }

Sketcher类不再是window事件的监听器,所以不需要实现WindowListener接口。WindowHandler类是window事件的监听器类。WindowHandler类是Sketcher类的内部类,可以访问Sketcher类的所有成员,所以调用window对象的dispose()方法时非常简单-只需要访问顶级类的window域即可。

转载于:https://www.cnblogs.com/mannixiang/p/3486115.html

Java基础之处理事件——使用适配器类(Sketcher 3 using an Adapter class)相关推荐

  1. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  2. Java基础语法(七)——类和对象

    文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...

  3. Java基础之处理事件——实现低级事件监听器(Sketcher 2 implementing a low-level listener)...

    控制台程序. 定义事件监听器的类必须实现监听器接口.所有的事件监听器接口都扩展了java.util.EventListener接口.这个接口没有声明任何方法,仅仅用于表示监听器对象.使用EventLi ...

  4. Java基础之处理事件——添加菜单图标(Sketcher 8 with toolbar buttons and menu icons)...

    控制台程序. 要为菜单项添加图标以补充工具栏图标,只需要在创建菜单项的Action对象中添加IconImage对象,作为SMALL_ICON键的值即可. 1 // Defines applicatio ...

  5. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  6. java基础--IO流之File类

    一.File类概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数 二.File类常见方法: 1,创建 boolean createN ...

  7. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  8. Java基础巩固(一)类,接口,枚举,常用API,集合,泛型,正则,数据结构

    一.static.final.权限关键字,代码块,接口,枚举 1 关键字 2 代码块 3 接口 4 枚举 idea快捷键 shift + enter 换行 ctrl + Alt + shift + U ...

  9. Java基础之一组有用的类——生成日期和时间(TryDateFormats)

    控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...

最新文章

  1. Kmeans聚类算法分析(转帖)
  2. Ajax回退刷新页面问题的解决办法
  3. docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
  4. 【最全解析】1050 螺旋矩阵 (25分)
  5. 超越Android:探索Kotlin的应用领域
  6. diskfileitemfactory 需要的包_浅析电动汽车电池包低压线束设计及制造
  7. linux下dns劫持C语言实现,Linux下实现劫持系统调用的总结(上)--代码及实现
  8. JQ树形菜单加表格混合使用:treeTable组件使用
  9. EXCEL难题一网打尽 无意间看到的 转过来 自己看看
  10. Linux Shell 基础语法 流程控制 逻辑运算 字符串操作详细解析
  11. 对话MOV | DeFi2020——如何从开放应用走向开放生态?
  12. 陈宇(Aqua)-安全->云安全->多云安全
  13. Mandatory condition is missing
  14. Linux系统漏洞本地提权
  15. mysql的高可用方案-PXC方案(综合各方的资料)
  16. 第2期技术: Double Q-learning算法原理
  17. OpenCV 获取变换矩阵
  18. 千锋云计算毕业设计论文:论文选题开题报告二
  19. ssh xm 工具_推荐7款超级好用的终端工具 —— SSH+FTP
  20. 音频电路设计中的基本知识(-)

热门文章

  1. Tech•Ed 2004北京杂感
  2. plc实验报告流程图_(新编)电气控制与PLC实验实验报告(0401)
  3. 在职期间如何优雅的去面试?
  4. python实现自动上传图片_利用python脚本实现使用typora编写markdown时图片自动上传到chevereto图床...
  5. windows 批处理脚本编写
  6. 美创数据安全服务能力再获认可!
  7. Linux防火墙屏蔽ip6,Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?
  8. linux qt执行adb,类豌豆荚: Linux Mint实测QtADB安卓管理客户端
  9. HTML 基础标签 (一)
  10. 大学生自学网(材料齐全)