我正在使用Java和Swing在线制作分布式并发游戏。当用户按下[x]关闭窗口时,我想从游戏区域中删除玩家的图标。如何在终止进程之前向VM执行函数?
答案 0 :(得分:2)
假设您使用JFrame
,请设置其默认关闭操作DO_NOTHING_ON_CLOSE
并添加WindowListener
以对windowClosing
做出反应。
此方法可以执行所需的操作,然后只需dispose
窗口即可实际关闭它。
注意:这也可以用来询问用户是否真的要退出...
答案 1 :(得分:0)
如果您正在使用JFrame,我认为您应该更好地编写自己的KeyEventDispatcher,如该帖子中所述:Unresponsive KeyListener for JFrame 如果您只是将KeyListener添加到JFrame并且在其上放置了可选组件,则必须将侦听器添加到所有这些组件,可能是递归的。
然后,您可以检测某人何时按x,然后调用JFrame的dispose函数。如果您还要在JFrame中添加WindowListener,则可以在框架关闭之前调用的windowClosing方法中放入一些代码。