java GUI 之 窗口事件

来源:互联网 发布:英特尔proset无线软件 编辑:程序博客网 时间:2024/06/06 14:22

窗口事件可以添加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("切换到后台... 在点击关闭按钮的瞬间 优先级比最小化高 会调用一次");            }        });



原创粉丝点击