用户关闭(Xs out)JFrame后立即执行操作

时间:2013-05-05 19:48:22

标签: java swing user-interface

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

3 个答案:

答案 0 :(得分: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,从技术上讲不会关闭窗口,因此不会通知监听器。

答案 1 :(得分:2)

为结束事件添加WindowListener

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

如需更多帮助,请查看WindowListener上的this tutorial

答案 2 :(得分:1)

要从封闭范围引用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);

            // ...
        }
    }
}

或者将其存储在具有不同名称的变量中:

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);

            // ...
        }
    }
}