2

我有一个以全屏模式运行并且运行良好的应用程序。现在我需要添加一个简单的、未经修饰的对话框,但我遇到了麻烦。如果我以最大化但不是全屏运行应用程序,则对话框将按预期显示和运行。当我切换回全屏时,对话框不会显示。

该对话框扩展了 JDialog 并且仅包含一个 JSlider 和几个按钮。它是未装饰的,不是模态的。(出于测试目的,我禁用了模态——每次对话框阻止输入时强制退出应用程序很痛苦。)我正在使用 进入全屏模式setFullScreenWindow(),并传入应用程序的主 JFrame。如果我将那个 JFrame 设置为 JDialog 的所有者,这没有什么区别。toFront()如果我调用对话框,它似乎也无济于事。

该对话框似乎处于活动状态——尤其是因为如果我将其设为模态,它会阻止输入——但只是没有显示或隐藏。那么,在全屏模式下显示 JDialog 有什么明显的技巧吗? 我可能会忽略或忽略的东西?

如果没有明显的解决方案,我可以稍后发布一些代码。不幸的是,我现在没有时间。

4

4 回答 4

5

JOptionPane.showInternalXXXDialog() 方法将对话框呈现为 JInternalFrames。也许您可以考虑使用 JIternaFrame 来模拟对话框。

于 2010-09-21T20:12:59.303 回答
2

事实上,正如 M1EK 在他的回答中提到的并且我在评论中提到的那样,全屏模式下的 Java 应用程序将不允许其他窗口显示在它们之上。GraphicsDevice的Javadoc API内容如下:

Windows 不能与全屏窗口重叠。所有其他应用程序窗口将始终按 Z 顺序显示在全屏窗口下方。

最后,我重新配置了我的应用程序,使其稍后才进入全屏模式。这仍然在开始时为我提供了一个相当不错的演示,并允许我的 JDialog 正常运行。即使在我的应用程序的“中间”,转换到全屏模式也是快速而流畅的。

于 2009-11-13T21:38:03.693 回答
1

你真的想在这个应用程序中处于全屏模式吗?这更像是一种游戏功能——我一直认为,为了更直接地访问帧缓冲区。您是否阅读过本教程:

http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html

在我看来,真的不是带有子窗口的 Swing 应用程序的最佳选择。

于 2009-11-12T16:16:17.310 回答
1

尝试使用这个。不是独占全面屏但足够接近。

setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
于 2012-02-07T17:49:25.693 回答