java GUI 之 窗口事件

窗口事件可以添加3种监听方式
1.获得焦点监听  (前台 后台)

f.addWindowFocusListener(new WindowFocusListener() {
            @Override
            public void windowGainedFocus(WindowEvent e) {
                System.out.println("前台 获得焦点");
            }

            @Override
            public void windowLostFocus(WindowEvent e) {
                System.out.println("后台 失去焦点");
            }
        });


2.获得状态监听  (正常 最小化 最大化)

f.addWindowStateListener(new WindowStateListener() {
            @Override
            public void windowStateChanged(WindowEvent e) {
                int oldState=e.getOldState();
                //原状态 (正常 最大化 最小化)
                int newState=e.getNewState();
                //新状态 (正常 最大化 最小化)

                //查看原状态是什么 新状态是什么
                System.out.println(e.paramString());

                //状态   常量符号                  常量
                //_________________________________
                //正常   Frame.NORMAL              0
                //最大化 Frame.MAXIMIZED_BOTH      6
                //最小化 Frame.ICONIFIED           1
                //_________________________________

                //分别可能是 3*2 6种情况

                //正常->最大化
                if(oldState==Frame.NORMAL&&newState==Frame.MAXIMIZED_BOTH)
                {
                    System.out.println("正常->最大化");
                }
                //正常->最小化
                if(oldState==Frame.NORMAL&&newState==Frame.ICONIFIED)
                {
                    System.out.println("正常->最小化");
                }
                //最大化->正常
                if(oldState==Frame.MAXIMIZED_BOTH&&newState==Frame.NORMAL)
                {
                    System.out.println("最大化->正常");
                }
                //最大化->最小化
                if(oldState==Frame.MAXIMIZED_BOTH&&newState==Frame.ICONIFIED)
                {
                    System.out.println("最大化->最小化");
                }
                //最小化->正常
                if(oldState==Frame.ICONIFIED&&newState==Frame.NORMAL)
                {
                    System.out.println("最小化->正常");
                }
                //最小化->最大化
                if(oldState==Frame.ICONIFIED&&newState==Frame.MAXIMIZED_BOTH)
                {
                    System.out.println("最小化->最大化");
                }
            }
        });

3. 获得监听 (可添加各种事件)

添加通用事件 WindowAdapter (可以满足 一般需求的事件)

f.addWindowListener(new WindowAdapter() {
            //6.1 设置窗口打开的时候发生的事件 默认都是一些空的操作
            public void windowOpened(WindowEvent e) {
               // super.windowOpened(e);
                System.out.println("窗体已经打开");
            }

            //6.2 设置窗体关闭按钮的点击事件
            public void windowClosing(WindowEvent e) {
                //super.windowClosing(e);
                System.out.println("窗体关闭按钮点击!");

                //6.2.1 直接关闭虚拟机 不执行windowColsed
                //System.exit(0);

                //6.2.2 关闭窗口 执行windowCloesd
                f.dispose();
            }

            //6.3 窗体正常关闭后
            public void windowClosed(WindowEvent e) {
                //super.windowClosed(e);
                System.out.println("窗口正常关闭后..");
            }

            //6.4 窗体最小化按钮点击
            public void windowIconified(WindowEvent e) {
                //super.windowIconified(e);
                System.out.println("最小化按钮...");
            }

            //6.5 窗体最小化还原
            public void windowDeiconified(WindowEvent e) {
                //super.windowDeiconified(e);
                System.out.println("最小化还原...");
            }

            //6.6 窗体切换到前台
            public void windowActivated(WindowEvent e) {
                //super.windowActivated(e);
                System.out.println("切换到前台..启动的时候默认就是前台 优先级比窗口打开或者最小化高");
            }

            //6.7 窗体切换到后台
            public void windowDeactivated(WindowEvent e) {
                //super.windowDeactivated(e);
                System.out.println("切换到后台... 在点击关闭按钮的瞬间 优先级比最小化高 会调用一次");
            }
        });



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值