2009-09-26 96 views
0

我的应用程序弹出一个对话框。用户通常希望在该对话框和应用程序窗口之间来回切换一段时间。我想让这个对话框保持在最前面,这样它就不会隐藏在主应用程序窗口后面。但同时我希望对话框有一个最小化按钮,以便在一段时间内不需要时可以避开。停留在主应用程序窗口顶部的最小化JFrame

这里是我试过:

  • 使用无模式的JDialog - 对话框停留在前面很好,但它不没有最小化按钮,它并没有自己的任务栏按钮或者

  • 使用JFrame--对话框现在有一个最小化按钮和它自己的任务栏按钮,但是当主窗口获得焦点时,对话框隐藏在它后面。

  • 使用JFrame并在对话框中添加WindowListener.windowDeactivated(){this.toFront()}。这个问题就是toFront()也会设置焦点,这样你会得到奇怪的焦点闪烁效果。

  • 使用带有setAlwaysOnTop的JFrame - 这是最新的解决方案,但现在窗口将保持在所有其他应用程序之上,而不仅仅是我的应用程序。

如果toFront只是将JFrame带到前面而不改变焦点,但很不幸,情况并非如此。有没有另一种方法可以改变JFrame Z-order?如果有一种简单的方法来“卷起”JDialog,即最小化它而不是任务栏,那也可以解决我的问题。

回答

0

为什么不在帧中侦听focusGained事件,然后在对话框中使用setZOrder/toFront? (不知道这会工作,但值得一试)。

+0

我还没有在任何地方找到setZOrder()方法。我会尝试使用toFront。 – amarillion 2009-10-22 09:10:58

相关问题