java语言编程GUI之Window事件经典总结

/*
 时间:2015年3月22日15:56:45
 目的:测试窗口事件
 
 提示:细细体味窗口事件和鼠标事件的处理的对比。两者差别不大。理解适配的使用。内部类的使用。
 
 //这是格式,
 addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    System.out.println("窗口正在关闭");
    System.exit(0);
   }
  });
 
class MyWindowListener extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.out.println("窗口正在关闭");
  System.exit(0);
 }  
}
内部类和内部实现类的区别,其实重要是其中的方法。按照我的理解,因为如果按照内部实现类的方法,我们需要传进addWindowListener一个实现了WindowListener接口的类的实例对象,因此需要new关键字,类名并不是要紧的,因为在这一刻,我们所需要的仅仅只是通过类名创建一个对象。因此此刻类名是可有可无的。因此我们把    class MyWindowListener 删去。当然extends也不需要存在了。但是我们仍然需要WindowAdapter,这是因为我们需要知道我们所继承的父类或者所实现的接口,这个是无法缺失的。创建对象需要(),因为可能需要传入参数,然后需要的就只是类体了。因此从这个方面看,内部类的那个格式是合理的,当然这也只是我个人的观点。
 Window对象是一个没有边界和菜单栏的顶层窗口,窗口的默认布局是BorderLayout。
 构造窗口时,他必须拥有窗体,对话框或其他作为其所有者定义的窗口。
 顶层窗口(包括Window, Frame, Dialog)的位置和大小受桌面窗口管理系统的限制。
 将尽所有努力响应这样的请求。但是,在某些情况下,
 窗口管理系统可以忽略这样的请求,或修改请求的几何结构,
 以放置和调整 Window 的大小,使之更好地与桌面设置匹配。
  应用程序可以随意设置不可见的Window的大小和位置,但是当WIndow可见时,窗口管理系统可以随后更改它的位置
  和大小。
 
  窗口能够生成一下WindwosEvents:WindowOpened, WindowClosed, indowGainedFocus, IndowLostFocus
  
  构造方法:
   Window(Frame owner)
    构造一个新的、最初不可见的窗口,使用制定的Frame作为其所有者。
   Window(Window owner)
    构造一个新的、最初不可见的窗口,使用指定Window作为其所有者。
   Window(Window owner, GraphicsConfiguration gc)
    构造一个新的,最初不可见的窗口,使用指定的所有者Window和屏幕设备的GraphicsConfiguration
     
     
  WindowListener接口 
   用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法)
   要么扩展抽象类WindowAdapter(仅重写所需要的方法)然后使用窗口的addWindowListener方法
   方法将从该类所创建的侦听器对象向该Window注册。当通过打开、关闭、激活、图标化或取消图标化而改变了
   窗口状态时,将调用该侦听器对象的相关方法,并将WindowEvent传递给该方法。
   
   该接口所含有的方法是:
    public void windowOpened(WindowEvent e);
     窗口首次变为可见时调用
    public void windowCLosing(WindowEvent e);
     用户试图从窗口的系统菜单中关闭窗口时调用。
    public void windowClosed(WindowEvent e);
     因对窗口调用dispose而将其关闭时调用。
    windowIconified
    public void windowIconified(WindowEvent e)
     窗口从正常状态变为最小化状态时调用。对于很多平台而言,已经将最小化的窗口将显示为窗口iconImage属性中制定的图标
    public void windowDeiconified(WindowEvent e)
     窗口从最小化状态变为正常状态时调用。

    public void windowActivated(WindowEvent e)
     将Window设置为活动Window时调用。只有框架或对话框可以成为活动Window。
     本机的窗口系统可能使用特殊装饰表示活动Window或其子窗口,如高亮显示标题栏。
     活动Window要么是聚焦Window要么是作为聚焦Window所有者的第一个Frame或Dialog
    public void windowDeactivated(WindowEvent e);
     当Window不再是活动Window时调用。
     
     
  WindowStateListener
   用于接收窗口状态事件的侦听器接口。
   旨在处理床阔状态事件的类要么实现此接口(及其包含的所有方法)要么扩展抽象WindowAdapter
   类(仅仅重写所需的方法)
  然后使用Window的addWindowStateListener方法将从该类所创建的侦听器对象向该Window注册。
  当通过图标化,最大化等改变窗口状态时,就调用侦听器对象中的windowStateChanged方法,
  并将WindowEvent传递给该方法。

   所含方法:
    public void windowStateChanged(WindowEvent e);
     窗口状态改变时调用。

  WindowAdapter类
   声明如下;
    public abstract class WindowAdapter extends Object 
      implements WindowListener, WindowStateListener, WindowFocusListener;
     
     接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。 

 扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。
 (如果要实现 WindowListener 接口,则必须定义该接口内的所有方法
 。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法。) 

 使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener 方法向该窗口注册侦听器。
 当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,
 并将 WindowEvent 传递给该方法。 

*/
import java.awt.*;
import java.awt.event.*;

public class TestWindowClose {
 public static void main(String[] args) {
  new MyFrame("TestWindowClose");
 }
}

class MyFrame extends Frame {
 public MyFrame(String title) {
  super(title);
  setLayout(null);
  setBounds(200, 200, 300, 300);
  setBackground(new Color(204, 35, 205));
  
  //addWindowListener(new MyWindowListener());
  
  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    System.out.println("窗口正在关闭");
    System.exit(0);
   }
  });
  
  setResizable(false);
  setVisible(true);
 }
}
/*
class MyWindowListener extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.out.println("窗口正在关闭");
  System.exit(0);
 }  
}
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值