java笔记 窗口事件 和 适配器

一.窗口事件

之前有过例子
setDefaultCloseOperation(EXIT_ON_CLOSE); // 点击x关闭窗口
这个函数的参数还有
DO_NOTHING_ON_CLOSE 什么也不做
HIDE_ON_CLOSE 隐藏当前窗口
DISPOSE_ON_CLOSE 隐藏当前窗口并释放窗口资源
EXIT_ON_CLOSE 结束窗口所在的应用程序

但这四种不能满足需求
如果在关闭的时候需要保存就不能用这个了


接口WindoListener
方法
windowActivated( WindowEvent e) 窗口从非激活状态到激活状态
windowDeactivated( WindowEvent e) 窗口从激活状态到非激活状态
windowClosing( WindowEvent e) 窗口被关闭时
windowClosed( WindowEvent e) 窗口被关闭后
windowIconified( WindowEvent e) 窗口图标化
windowDeiconified( WindowEvent e) 窗口撤销图标化
windowOped( WindowEvent e) 当窗口打开时

点击右上角图标化,调用windowIconified方法后,还将调用windowDeactivated
撤销图标化时,调用windoDeiconified,还会调用windowActivated
点击关闭按钮时,先调用windowClosing,这个方法的执行必须保证窗口调用dispose()(就是关闭窗口命令方法,才能继续调用windowClosed

注:如果调用windowClosing方法时,使用System.exit(0),监视器没有机会调用windowClosed方法

二.适配器

适配器和接口一样
只是不需要实现接口里面所有的方法

注:适配器是继承关系,不是实现关系,剩下的都一样

//Inner class 事件处理例一
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyFrame extends JFrame
{
    
    
   Boy police;

   MyFrame(String s)
   {
    
    
       super(s);
       police = new Boy();
       setBounds(100, 100, 200, 300);
       setVisible(true);

       // 注册窗口适配器,和监听器用一个函数
       addWindowListener(police);

       validate(); 
   }

   private class Boy extends WindowAdapter  // 注意这里的是继承关系, 不是实现关系
   {
    
    
        public void windowClosing(WindowEvent e)
        {
    
    
            System.exit(0); //关闭方法
   }
}

//主类
public class test
{
    
    
    public static void main(String args[])
    {
    
    
        MyFrame win = new MyFrame("窗口");
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yogur_father/article/details/109009639
今日推荐