GUI编程10:窗口监听事件

视频链接:12、窗口监听事件_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p=12&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5

1.使用成员内部类方式实现窗口监听

java 复制代码
ackage com.yundait.lesson03;

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

//主程序
public class TestWindow {
    public static void main(String[] args) {
        new WindowFrame();
    }
}

class WindowFrame extends Frame {
    public WindowFrame(){
        setBackground(Color.blue);
        setBounds(200,200,500,400);
        setVisible(true);
        addWindowListener(new MyWindowListener());
    }

    //创建窗口监听类,使用成员内部类方式实现。
    class MyWindowListener extends WindowAdapter{
        @Override
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }
}

2.使用匿名内部类方式监听窗口

java 复制代码
package com.yundait.lesson03;

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

public class TestWindow01 {
    public static void main(String[] args) {
        new WindowsFrame01();
    }
}

//创建我的窗口类
class WindowsFrame01 extends Frame{
    //调用构造器方法进行初始化;
    public WindowsFrame01(){
        setBackground(Color.blue);
        setBounds(200,200,500,400);
        setVisible(true);

        //添加窗口监听事件,
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }//使用匿名内部类方式监听窗口关闭
        });
    }
}

3.窗口监听可实现的常用功能

java 复制代码
package com.yundait.lesson03;

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

public class TestWindow01 {
    public static void main(String[] args) {
        new WindowsFrame01();
    }
}

//创建我的窗口类
class WindowsFrame01 extends Frame{
    //调用构造器方法进行初始化;
    public WindowsFrame01(){
        setBackground(Color.blue);
        setBounds(200,200,500,400);
        setVisible(true);

        //添加窗口监听事件,
        addWindowListener(new WindowAdapter() {
            @Override //窗口被打开
            public void windowOpened(WindowEvent e) {
                System.out.println("windowOpened");
            }

            @Override //窗口正在关闭
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing");
                System.exit(0);

            }

            @Override //窗口被关闭
            public void windowClosed(WindowEvent e) {
                System.out.println("windowClosed");
            }

            @Override //窗口被激活
            public void windowActivated(WindowEvent e) {
                WindowsFrame01 source = (WindowsFrame01)e.getSource();
                source.setTitle("窗口被激活了");
                System.out.println("windowActivated");
            }
        });
    }
}
相关推荐
卖报的小行家_几秒前
Vue2源码,响应式原理-对象
前端
小钰能吃三碗饭几秒前
打造类 RainbowKit 的 Solana 钱包连接套件
前端·web3·区块链
Anlici4 分钟前
如何优化十万数据的浏览体验?从性能、监控到布局全面拆解
前端·性能优化
utmhikari4 分钟前
【日常随笔】万字长文,如何用pyside6开发一个python桌面工具
前端·python·pyqt
JustHappy11 分钟前
「Versakit 0.3 重磅发布」 两个月开发成果全揭!
前端·javascript·vue.js
chenqi21 分钟前
WebGPU和WebLLM:在浏览器中解锁端侧大模型的未来
前端·人工智能
Lingxing22 分钟前
Vue组件树:从设计到实现的全方位指南 🚀
前端·vue.js
玖玖passion23 分钟前
leader:请你用Protobuf进行数据交互🥲
前端
Linruoxin26 分钟前
为什么给 body 设置背景会直接铺满整个视口?
前端·css
Jenlybein29 分钟前
Vue3 权限控制:利用动态路由与自定义指令
前端·vue.js