按下[x]时运行代码

时间:2017-07-07 14:36:00

标签: java swing concurrency virtual-machine

我正在使用Java和Swing在线制作分布式并发游戏。当用户按下[x]关闭窗口时,我想从游戏区域中删除玩家的图标。如何在终止进程之前向VM执行函数?

2 个答案:

答案 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方法中放入一些代码。