我必须编写一个小程序来弹出密码对话框。问题是对话框设置为始终位于顶部,但当用户单击 IE 窗口时,对话框仍然隐藏在 IE 窗口后面。由于对话框是模态的并保持allIE 线程 IE 窗格不会刷新,对话框窗口仍然绘制在 IE 之上(但不会刷新)。这种行为让用户感到困惑(他们seeIE 顶部的对话框,但看起来它已经挂起,因为它没有刷新)。
所以我需要一种方法来使该对话保持在一切之上。但解决这个问题的任何其他方法都会很好。
这是代码:
PassDialog dialog = new PassDialog(parent);
/* do some non gui related initialization */
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
解决方案:正如@shemnon 指出的,我应该创建一个窗口而不是模式对话框的(null、Frame、Applet)父窗口。初始化父级的好方法是:
parent = javax.swing.SwingUtilities.getWindowAncestor(theApplet);
你用什么论据来支持父母?
如果您使用 Applet 的父级,您可能会有更好的运气。
javax.swing.SwingUtilities.getWindowAncestor(theApplet)
使用 getWindowAncestor 将跳过小程序父级(getRoot(component) 将返回小程序)。至少在 Java 的某些版本中,有一个相当于 IE 窗口的 Frame。 YMMV。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)