基本上它是带有GUI的客户端程序,所以我想在用户关闭客户端程序时关闭套接字。是否有监听器或其他东西可以让我这样做?
答案 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);
// ...
}
}
}