无法检测用户何时关闭(Xs)JFrame

时间:2013-05-06 03:06:04

标签: java swing jframe windowlistener

主持人:请参阅此答案的评论:stackoverflow.com/a/16388697/1574975

我正在尝试检测用户何时使用带有GUI的客户端程序,这样当他们关闭JFrame时,例如通过Xing,我就可以关闭套接字连接。

但是当用户关闭JFrame时,我无法做任何事情。我被告知我需要将WindowListener与我的JFrame一起使用,但它似乎不起作用。我的类扩展了JFrame,这里是设置JFrame的构造函数的一部分:

        this.setContentPane(pane);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setVisible(true);
        final JFrame thisFrame = this;
        thisFrame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("User has closed window");
            }
        });
    }

里面的println没有打印,这就是为什么我觉得它不起作用。我做得对吗还是我需要做一些额外的事情吗?

1 个答案:

答案 0 :(得分:3)

windowClosed将不会被调用,因为JVM已关闭以响应setDefaultCloseOperation已设置为JFrame.EXIT_ON_CLOSE

改为使用windowClosing或更改defaultCloseOperation