Java 在用户按下[x]后窗口关闭之前执行某些操作
我正在构建一个instant messenger应用程序。我需要在Swing JFrame的默认关闭按钮(小“x”)上添加一个操作事件。Java 在用户按下[x]后窗口关闭之前执行某些操作,java,swing,jframe,windowlistener,Java,Swing,Jframe,Windowlistener,我正在构建一个instant messenger应用程序。我需要在Swing JFrame的默认关闭按钮(小“x”)上添加一个操作事件。 当客户端按下X按钮时,我需要告诉服务器他脱机了,只有在该操作发生后,我才必须关闭窗口。我似乎找不到如何在默认按钮上获取操作侦听器。只需在JFrame中添加一个事件,并使用事件听起来像是要用处理或的WindowListener调用。您可能希望创建的子类,以便只重写您感兴趣的方法 不要忘记与服务器的通信应该在不同的线程中-不要用网络流量阻塞UI线程。但是,请记住,
当客户端按下X按钮时,我需要告诉服务器他脱机了,只有在该操作发生后,我才必须关闭窗口。我似乎找不到如何在默认按钮上获取操作侦听器。只需在JFrame中添加一个事件,并使用事件听起来像是要用处理或的
WindowListener
调用。您可能希望创建的子类,以便只重写您感兴趣的方法
不要忘记与服务器的通信应该在不同的线程中-不要用网络流量阻塞UI线程。但是,请记住,如果您的整个应用程序即将关闭:
- 无论如何,与服务器的任何连接都将关闭
- 任何后台线程都将被终止
不要执行
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)因为这可能会中断服务器通信。相反,在完成服务器通信后,手动说System.exit(0)
。查看Runtime.addShutdownHook()方法 看看这个,也许它对你有帮助
如果有人按下关闭按钮,您可以给出自己的实现
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// Here you can give your own implementation according to you.
}
});
这类问题在这里只被问过100多次,包括:。投票以复制方式结束。结束它,新手错误。谢谢!我差一点就成功了。我只是写了新的windowAdapter,没有添加它。我没有意识到。谢谢你!
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener( new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// Here you can give your own implementation according to you.
}
});