关于Java窗口响应事件 windowsDeactivated

来源:互联网 发布:如何设置电子狗数据 编辑:程序博客网 时间:2024/04/29 16:55

在写代码时遇到这样的问题,debug的时候发现windowAdapter 里的windowDeactivated这个方法里的函数一直在被调用。不间断地一直被调用,这让我很不解。

API上只有短短的一句话,“Invoked when a window is de-activated.”这不跟废话一样吗?

//while closing this frame, update the main frame's imageaddWindowListener(new WindowAdapter(){@Overridepublic void windowClosed(WindowEvent e) {super.windowDeactivated(e);……}});

然后就上网查,怎么也查不到java的关于windowDeactivated的更多的解释。后来索性看了看C++里的Windows.Deactivated这个方法的解释,心里想着反正各种语言也各有通的地方,说不定一样呢?果然,我看到了原因。

——

当,停用窗口 (成为后台窗口):

  • 用户切换到当前应用程序的另一个窗口。

  • 用户切换到另一个应用程序的窗口通过使用 ALT+TAB 或使用任务管理器。

  • 用户单击一个窗口的任务栏按钮在其他应用程序。

需要检测的窗口它们何时将停用通过处理 Deactivated 事件。

在首次停用窗口后,在其生存期内,它可以重新激活和停用了多次。 如果应用程序行为或状态取决于其启动状态,它可以检查 IsActive 确定哪个启动状态它。


我想,原因就是我弹出了另一个窗口,这时候此窗口并不处于activated的状态,它被“闲置”了,所以里面的方法不断地被调用,不断地被调用。然后我改成了windowsClosed,一切问题就解决了。这里要注意,我之前用windowsClosing,只有在点击右上角X的时候有效,如果点按钮dispose()退出,是不会进入windowsClosing里面的,因为dispose()只是释放部分资源而不是关闭窗口,但是我找到其他办法去只不关闭某个窗口而不退出整个程序了,有好方法大家可以分享一下,求教。


0 0