今天我们要实现这个关闭窗口的功能,就是点窗口的那个叉叉它会关闭。

设计窗口的事件就是WindowsEvents,而与之有关的监听器就是WindowsListener

WindowsListener也是个接口,它有7个方法,分别处理windows的不同的事件。  比如windowActivated()window被激活,就是两个窗口,一个是颜色变灰,一个仍是蓝色,然后你用鼠标点那个灰的窗口它变成蓝色这叫激活窗口。  windowClosed()  已经关后做出的反应  windowClosing()正在关闭,这是我们要处理的事件。  windowIconified()卡片化,也是最小化的意思。

看例子代码(内部类的写法):

import java.awt.*;
import java.awt.event.*; public class TestWindowClose {
public static void main(String[] args) {
new MyFrame55("fuck");
}
} class MyFrame55 extends Frame { public MyFrame55(String s) {
super(s);
setBounds(300,300,400,400);
setLayout(null);
setBackground(new Color(204,204,255));
setVisible(true);
addWindowListener(new MyWindowMonitor());
} class MyWindowMonitor extends WindowAdapter { //内部类,因为这个是window关闭的这个事件监听类对于其他类一点关系都没有
public void windowClosing(WindowEvent e) { //重写正在关闭这个事件
setVisible(false);
System.exit(0);//存0是正常退出,存-1是非正常退出。
}
} }

哎其实这个类和其他的方法有关系吗?除了和这个addWindowListener()所以,除了这个写法,我们还有这样的一种写法,这种写法叫做方法内的类:局部类,也叫匿名的内部类

    this.addWindowListener(
new WindowAdapter() {//像一个类的类体,但它没有名字
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(-1);
}
});

这个类是当成WindowAdapter来用。所以语法这样写本质上的意义就是这个类从WindowAdapter继承,我们new了这个类的一个对象出来把它当作WindowAdapter来用。

匿名类一般是 逻辑简单,语句少,不经常变动,使用匿名类

就知道有这个东西,看得懂别人写的就行了。

windowsEvents的更多相关文章

随机推荐

  1. 2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义

    使用VS2010,在FireBreath里面调用ortp库和Speex库.编译的时候出现错误: 2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _ca ...

  2. cocos2d-x进化为2.5D的一些想法

     首先我得说Unity3D已经做的非常好了,搞这些东西意义真心不大.详细Unity3D有什么优势我之前也写过两篇文章来阐述自己的想法.         假设我的下一份工作是U3D的话,预计我就不会 ...

  3. 深入浅出Redis(二)高级特性:事务

    第一篇中介绍了Redis是一个强大的键-值仓储,支持五种灵活的数据结构.其实,Redis还支持其他的一些高级特性:事务.公布与订阅.管道.脚本等,本篇我们来看一下事务. 前一篇中我们提到,在Redis ...

  4. Linux下获取线程TID的方法

    如何获取进程的PID(process ID)? 可以使用: #include <unistd.h> pid_t getpid(void); 通过查看头文件说明,可以得到更详细的信息: fi ...

  5. 项目实战之玩转div+css制作自己定义形状

    项目需求 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  6. 链接脚本在编程中的高级运用之二——执行时库和C++特性支持

    我们在链接脚本在编程中的高级运用之中的一个可变长数组中已经讲述了编译链接的原理,并且以uboot命令为例具体介绍链接脚本怎样实现可变长数组. 本章在前者的基础上继续讲述链接脚本在执行时库中的高级应用技 ...

  7. 2 AngularJS 1 概念浓缩

    Angular Web APP 结构图: module   --> 模块     :相当于一个容器,Angular里的所有东西都得放在模块里,才能够被引用和加载. directive  --&g ...

  8. 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题

    由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...

  9. html2canvas 导出包含滚动条的内容

    import html2canvas from 'html2canvas'; exportPDF() { // 导出为 pdf let dom = document.querySelector('yo ...

  10. Oracle 表的创建 及相关參数

    1. 创建表完整语法 CREATE TABLE [schema.]table (column datatype [, column datatype] - ) [TABLESPACE tablespa ...