Java JFrames和JDialogs有时会在其父窗口后面打开,但具有焦点

Java JFrames和JDialogs有时会在其父窗口后面打开,但具有焦点,java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,我们正在开发一个相当大的Java企业应用程序 传统的Swing客户端 偶尔,我们会遇到这样一个问题:随机JDialogs和JFrames打开并获得焦点,但却隐藏在它们的父窗口后面 不幸的是,这种现象是不可复制的,而且有时会发生。 到目前为止,它已在安装了Win7和WinXP的机器上得到认可。 由于所有运行Windows操作系统的开发人员,这并不一定意味着此问题特定于Windows 我不知道如何解决这个问题。 也许有个秋千专家能解决这个问题? (我们仍在使用Java 6)。我曾经遇到过同样的问题:

我们正在开发一个相当大的Java企业应用程序 传统的Swing客户端

偶尔,我们会遇到这样一个问题:随机JDialogs和JFrames打开并获得焦点,但却隐藏在它们的父窗口后面

不幸的是,这种现象是不可复制的,而且有时会发生。 到目前为止,它已在安装了Win7和WinXP的机器上得到认可。 由于所有运行Windows操作系统的开发人员,这并不一定意味着此问题特定于Windows

我不知道如何解决这个问题。 也许有个秋千专家能解决这个问题?
(我们仍在使用Java 6)。

我曾经遇到过同样的问题:错误是JDialog的/JFrame的父级实际上没有正确设置。我将其设置为父窗口的父窗口,这导致了问题。

JFrames不应该有“父窗口”,因为它们是应用程序的“最父窗口”。如果您有一个窗口是“子窗口”,因此位于另一个窗口之上,那么它应该是一个对话框,如JDialog或JOptionPane,并且应该相应地设置其父窗口。

尝试添加一个FocusListener并侦听获得焦点的事件,您可以在其中调用window.toFront()。setAllwaysOnTop()对您来说也可能很有趣。

期待您的帖子。请尝试以下回答:谢谢,我将检查设置家长的行。但有趣的是,这种情况并非经常发生。你的情况也一样吗?我真的不记得了。对我来说,有趣的是,这只发生在孩子第一次被打开的时候——然后我点击我的用户界面,把孩子带到了最前面。关闭该子项并再次打开将导致该子项位于前面。感谢您提供的信息,但这并不解决问题。如前所述:使用JDialogs时也会发生这种行为。令人恼火的是,它只是偶尔发生,而不是经常发生。@Stefan:但您没有提到是否已检查所有对话框的父对话框是否设置正确。如果没有这些信息,或者没有一个能让我们重现你的问题的模型,我就看不出我们能如何帮助你。正如我所说的,它是不可重现的,而且会发生