如何在用户切换浏览器选项卡时从JApplet隐藏JDialog?

问题:用户从applet开始长时间操作; 显示带有进度条的JDialog。 用户打开/切换到另一个浏览器选项卡 – 仍然显示JDialog(并惹恼用户)。

当用户切换到另一个选项卡时,应隐藏JDialog; 当用户切换回来时再次显示。

注意:我看到了类似问题的问题,其中解决方案是添加windowActivated / deactivated listener。 它对我不起作用,因为窗口中有多个框架,其中一个框架包含applet。 当用户单击另一个帧时,会生成windowDeactivate事件,但用户仍在同一个选项卡中。

尝试将applet指定为对话框的所有者:

 JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this)); 

其中“this”是JApplet。 希望每次父母失去焦点时,这将激活/取消激活对话框。

解决方案:向所有帧添加侦听器

  ...