加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – WindowListener无法按预期工作

发布时间:2020-12-15 04:57:25 所属栏目:Java 来源:网络整理
导读:我希望我的GUI在出现JOptionPane时进行一些检查. 因为我找不到任何其他方式,我虽然每次应用程序窗口失去焦点时都可以执行这些操作(它只是检查字符串).出于这个原因,我在我的JFrame上添加了以下代码: appFrame.addWindowListener(new WindowAdapter() { @Ove
我希望我的GUI在出现JOptionPane时进行一些检查.
因为我找不到任何其他方式,我虽然每次应用程序窗口失去焦点时都可以执行这些操作(它只是检查字符串).出于这个原因,我在我的JFrame上添加了以下代码:

appFrame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowLostFocus(WindowEvent e) {
                System.out.println("Focus Lost");

            }
            @Override
            public void windowClosing(WindowEvent e) {
                //some other stuff here that work
            }
});

关闭窗口的监听器工作正常.虽然当JFrame没有集中时没有任何反应.每次从JFrame切换到其他窗口时,是否应该打印“Focus Lost”?此外,当显示JOptionPane时是否会触发此方法?

解决方法

我不打算讨论为什么你正在做你正在做的事情,但由于以下原因,它没有像你期望的那样工作:

WindowAdapter是一个便利类,因此您可以创建一个侦听器并为多种类型的事件注册它.您只为一组事件注册了它,您还需要通过以下方式注册焦点事件:Window.addWindowFocusListener()

WindowAdapter adapter = new WindowAdapter() {
        @Override
        public void windowLostFocus(WindowEvent e) {
            System.out.println("Focus Lost");
        }
        @Override
        public void windowClosing(WindowEvent e) {
            //some other stuff here that work
        }
    };
appFrame.addWindowListener(adapter);
appFrame.addWindowFocusListener(adapter);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读