0

基本上它是一个带有 GUI 的客户端程序,所以我想在用户关闭客户端程序时关闭套接字。是否有 Listener 或其他东西可以让我这样做?

4

3 回答 3

2
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {

    @Override
    public void windowClosing(WindowEvent e) {
        // do stuff
    }
});

请注意,只有在通过 (x) 按钮关闭框架之前将默认关闭操作设置为时,才会调用此方法。默认值是技术上不关闭窗口,因此不会通知侦听器。EXIT_ON_CLOSE HIDE_ON_CLOSE

于 2013-05-05T19:52:45.617 回答
2

WindowListener为结束事件添加一个:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(new WindowAdapter()
{
    public void windowClosing(WindowEvent e)
    {
        // Do stuff
    }
});

如需更多帮助,请查看's上的本教程。WindowListener

于 2013-05-05T19:55:39.810 回答
1

To refer to this from an enclosing scope, use this:

class MyFrame extends JFrame {

    public MyFrame() {
        this.addWindowListener(
            // omitting AIC boilerplate

            // Use the name of the enclosing class
            MyFrame.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // ...
        }
    }
}

Or store it in a variable with a different name:

class MyFrame extends JFrame {

    public MyFrame() {
        final JFrame thisFrame = this;
        this.addWindowListener(
            // omitting AIC boilerplate

            // Use the name of the enclosing class
            thisFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // ...
        }
    }
}
于 2013-05-05T20:16:12.017 回答