我正在开发一个带有自定义 CSS 渲染的 Swing 应用程序。作为系统的一部分,我也使用 JDialogs,但我需要访问对话框之外的某些组件(紧急按钮)。
为此,我选择了以下方法:
- 所有对话框都是非模态的。那些我想制作准模态的,将被设置为总是在顶部。
- 总是有一个准模态对话框。在这种情况下,我在此对话框下方放置了另一个对话框,全屏、半永久。
- 此“模糊”对话框应覆盖整个屏幕,捕捉鼠标事件并将它们仅转发到紧急按钮。与此同时,我在上面打开了一些缝隙,以便可以通过半永久性表面看到紧急按钮而没有任何影响。
- 模糊对话框永远无法聚焦或激活(我对此有一个可否决的侦听器)
一切正常,直到发生某些事情并且模糊对话框似乎覆盖了我的准模态对话框。但是,如果我将任何外部应用程序窗口移到它上面,准模态对话框将保留在顶部。而不是复杂的解释,请参见以下链接的图片:http: //lost.lost.hu/javascreen.png
到目前为止,我尝试调试重绘、事件、所有内容,但找不到任何会导致这种情况的东西。尤其是上面描述的案例,让我难以理解这里发生了什么。
我最近更新到Java 1.7,希望能摆脱这种现象,但今天又回来了。