WindowAdapter类使用

 Java中,当我们要实现一个 WindowListener 接口,则必须定义该接口内的所有方法。(该接口中的方法比较多)。那么能不能让我们只重写自己的程序需要的部分呢?
 当然是可以的,这里就要用到我们的WindowAdapter类。

1.接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
2.扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现 WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法。)
3.使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener 方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。

这里给出一个窗口事件的分类
 GUI程序中,经常在窗口发生变化的时候添加处理。比如说窗口关闭、打开、最大最小化等等。
 Java中窗口事件监听有三种:WindowListener、WindowStateListener、WindowFocusListener,分别表示窗口监听、窗口转态监听和窗口焦点监听。这三种对应的窗口事件都是WindowEvent。
 看下面的表格:
                   WindowStateListener接口

方法名作用
windowStateChanged窗口正在正常、最大最小化的时候

;                   WindowFocusListener接口

方法名作用
windowGainedFocus窗口获得焦点时发生
windowLostFocus窗口失去焦点时发生

;                   WindowListener接口

方法名作用
windowOpened窗口第一次打开时发生
windowClosing窗口主动关闭时发生
windowClosed窗口被动关闭时发生
windoIconified窗口最小化时发生
windowDeiconified窗口从最小化还原时发生
windowActivated窗口激活为当前窗口时发生
windowDeactivated窗口为非当前窗口时发生

那么我们写窗口事件的监视器类的时候,不可能把这些方法都重写,这个时候我们只需要扩展WindowAdapter类就行,然后只实现自己想要的部分。

下面看一个具体的例子吧:

package cn.com;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class My  extends JFrame
{
	
	public void init()
	{
		//注册监视器
		this.addWindowListener(new WindowHandler());
		//窗口属性设置
		this.setSize(700, 500);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}
	
	//窗口激活监听实例类
	private class WindowHandler extends WindowAdapter
	{
		public void windowClosing(WindowEvent e)
		{
			System.out.println("窗口主动关闭时发生");
		}
		public void windowOpened  (WindowEvent e)
		{
			System.out.println("窗口第一次被打开");
		}
		
	}
	
	public My()
	{
		init();
	}
}

这里我们就可以只关注我们想要的了,其他的方法就可以不写。道友们可以测试下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值