我有一个以全屏模式运行的应用程序,并且运行正常。现在我需要添加一个简单的,未修饰的对话框,我遇到了麻烦。如果我运行应用程序最大化但不是全屏,则对话框将按预期显示和运行。当我切换回全屏时,对话框将不会显示。
该对话框扩展了JDialog,只包含一个JSlider和几个按钮。它是未修饰的,非模态。 (我为测试目的禁用了模态 - 每次对话框阻止输入时强制退出应用程序都很痛苦。)我正在使用setFullScreenWindow()
进入全屏模式,传入应用程序的主JFrame。如果我将非常JFrame设置为JDialog的所有者,则没有什么区别。如果我在对话框上调用toFront()
,它似乎也无济于事。
对话框似乎处于活动状态 - 特别是因为如果我将其设为模态,它会阻止输入 - 但只是不显示或隐藏。那么,在全屏模式下显示JDialog有什么明显的诀窍吗?我可能忽视或省略的东西?
如果没有明显的解决方案,我可以稍后发布一些代码。不幸的是,我现在没有时间。
答案 0 :(得分:5)
JOptionPane.showInternalXXXDialog() 方法将对话框呈现为JInternalFrames。 也许您可以考虑使用JIternaFrame来模拟对话框。
答案 1 :(得分:2)
事实上,正如M1EK在他的回答中提到的,我在评论中提到,全屏模式下的Java应用程序将不允许其他窗口显示它们。 Javadoc API for GraphicsDevice读取:
Windows无法与全屏窗口重叠。所有其他应用程序窗口将始终显示在Z顺序的全屏窗口下方。
最后,我重新配置了我的应用程序,以便它稍后才能进入全屏模式。这仍然在一开始就给我一个相当类的演示,并允许我的JDialog按照它应该运行。即使在我的应用程序的“中间”,也可以快速顺利地过渡到全屏模式。
答案 2 :(得分:1)
你真的想要在这个应用程序的全屏模式?这更像是一个游戏功能 - 我总是想到能更直接地访问帧缓冲区。你读过这个教程了吗?
http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html
在我看来,对于带有子窗口的Swing应用来说,这不是最好的选择。
答案 3 :(得分:1)
试试这个。不是专属的全屏,但它足够接近。
setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);