【发布时间】:2017-07-07 14:35:59
【问题描述】:
我正在使用 Java 和 Swing 在线制作分布式并发游戏。当用户按下 [x] 关闭窗口时,我想从游戏区域中删除玩家的图标。如何在终止进程之前让 VM 执行某个功能?
【问题讨论】:
-
有什么尝试吗?您可以提供任何代码吗?
标签: java swing concurrency virtual-machine
我正在使用 Java 和 Swing 在线制作分布式并发游戏。当用户按下 [x] 关闭窗口时,我想从游戏区域中删除玩家的图标。如何在终止进程之前让 VM 执行某个功能?
【问题讨论】:
标签: java swing concurrency virtual-machine
假设您使用的是JFrame,将其默认关闭操作设置为DO_NOTHING_ON_CLOSE 并添加WindowListener 以对windowClosing 做出反应。
这种方法可以做任何需要的事情,然后只需dispose 窗口就可以真正关闭它。
注意:这也可以用来询问用户是否真的想退出...
【讨论】:
如果您使用的是 JFrame,我认为您最好编写自己的 KeyEventDispatcher,如该帖子中所述:Unresponsive KeyListener for JFrame 如果您只是将 KeyListener 添加到 JFrame 并且您在其上放置了可选组件,那么您也必须将侦听器添加到所有这些组件中,大概是递归的。
然后您可以检测到有人何时按下 x,然后调用 JFrame 的 dispose 函数。如果您还向 JFrame 添加 WindowListener,则可以将一些代码放入在框架关闭之前调用的 windowClosing 方法中。
【讨论】: