JFrames和JDialogs有时会在父窗口后面打开但是有焦点

时间:2012-03-23 09:37:37

标签: java swing jframe jdialog

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

我们时不时地面对随机JDialogs和JFrames开放并获得焦点的问题,但隐藏在父窗口后面。

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

我不知道如何解决问题。 也许有一位Swing专家可以解决这个问题? (我们仍然使用Java 6)。

3 个答案:

答案 0 :(得分:4)

JFrames不应该有“父母”,因为它们应该是应用程序的“父级”窗口。如果你有一个意图是“子”的窗口,因此意味着在另一个窗口之上,那么它应该是一个对话框,如JDialog或JOptionPane,并且应该相应地设置其父窗口。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

尝试添加FocusListener并侦听焦点获取事件,您可以在其中调用yourWindow.toFront()。 setAllwaysOnTop()对你来说也很有趣。