-2

对于版主:请参阅此答案的评论: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 没有被打印出来,这就是我认为它不起作用的原因。我做得对还是需要做一些额外的事情?

4

1 回答 1

3

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

改用windowClosing或更改defaultCloseOperation

于 2013-05-06T03:07:35.583 回答