窗口监听事件

该博客展示了如何在Java中创建一个基本的GUI窗口,并添加窗口监听器以处理窗口关闭和激活事件。`WindowFrame`类继承自`Frame`,并添加了背景颜色、边界以及窗口监听器。监听器覆盖了`windowClosing`和`windowActivated`方法,当窗口关闭时打印消息,并改变窗口标题。此外,还定义了一个未使用的`MyWindowListener`类,也实现了相同的功能。
package 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(100,100,200,200);
        setVisible(true);
        //addWindowListener(new MyWindowListener());
        this.addWindowListener(
                new WindowAdapter() {
                  
                    @Override
                    public void windowClosing(WindowEvent e) {
                        System.out.println("窗口正在关闭了");
                    }

                   

                    @Override
                    public void windowActivated(WindowEvent e) {
                        System.out.println("窗口激活");
                        WindowFrame source = (WindowFrame) e.getSource();
                        source.setTitle("被激活了");
                    }

                   
                }
        );

    }
    class MyWindowListener extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent e) {
            setVisible(false);  //隐藏窗口,通过按钮,隐藏当前窗口
            System.exit(0);   //0正常退出,1是非正常退出
        }
    }
}

在不同的开发场景中,有多种方法可以监听浏览器窗口关闭事件: ### JavaScript 原生方法 可以使用 `window.onbeforeunload` 事件监听浏览器窗口关闭或页面刷新事件。若要阻止关闭并弹出确认弹窗,可按如下操作: ```javascript window.onbeforeunload = function(e) { var e = window.event || e; e.returnValue = "确认关闭页面吗?"; }; ``` 此代码在用户尝试关闭页面或刷新时,会弹出确认对话框,询问用户是否真的要关闭页面 [^1]。 还能通过 `window.onbeforeunload` 事件判断是关闭网页还是刷新页面: ```javascript window.onbeforeunload = function (event) { if (event.clientX > document.body.clientWidth && event.clientY < 0 || event.altKey) { console.log("你关闭了浏览器"); } else { console.log("你正在刷新页面"); } }; ``` 这里通过判断鼠标位置和是否按下 `ALT` 键,来区分是关闭操作还是刷新操作 [^2]。 ### jQuery 方法 使用 jQuery 可以通过 `$(window).on('beforeunload')` 来监听页面关闭事件: ```javascript $(window).on('beforeunload', function(event) { event.preventDefault(); event.returnValue = '是否确定关闭页面?关闭后已经完成的题目不会保存!'; }); ``` 若要注销页面关闭的监听事件,可使用 `$(window).off('beforeunload')`,若要关闭页面,可使用 `window.close()` [^3]。 ### Vue 项目中监听 在 Vue 项目里,可在 `mounted` 钩子中添加 `window.onbeforeunload` 事件监听: ```javascript export default { mounted() { window.onbeforeunload = (e) => { // 在这里添加关闭或刷新时要执行的操作 console.log('页面即将关闭或刷新'); return '确认关闭页面吗?'; }; }, beforeDestroy() { // 销毁前移除事件监听,防止内存泄漏 window.onbeforeunload = null; } }; ``` 此代码在 Vue 组件挂载时添加事件监听,在组件销毁前移除监听,避免内存泄漏 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值