我必须编写一个显示密码对话框的小程序。问题是对话框设置为始终位于顶部,但是当用户单击 IE 窗口时,对话框仍然隐藏在 IE 窗口后面。并且由于对话框是模态的并且包含所有IE 线程 IE 窗格不会刷新,并且对话框窗口仍然绘制在 IE 之上(但没有刷新)。这种行为让用户感到困惑(他们在 IE 顶部看到对话框,但看起来它已经挂起,因为它没有刷新)。
所以我需要一种方法来让这个对话框保持在一切之上。但是这个问题的任何其他解决方案都会很好。
这是代码:
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);