【发布时间】:2023-12-24 18:57:01
【问题描述】:
我希望我的应用程序具有全屏模式。执行此操作的最简单方法是什么,我需要为此使用第三方库还是 JDK 中已经提供了此功能?
【问题讨论】:
标签: java graphics fullscreen
我希望我的应用程序具有全屏模式。执行此操作的最简单方法是什么,我需要为此使用第三方库还是 JDK 中已经提供了此功能?
【问题讨论】:
标签: java graphics fullscreen
试试Full-Screen Exclusive Mode API。它是在 JDK 1.4 版本中引入的。部分功能包括:
- 全屏独占模式 - 允许您暂停窗口系统,以便直接在屏幕上进行绘图。
- 显示模式 - 由尺寸(显示器的宽度和高度,以像素为单位)、位深(每个像素的位数)和刷新率(显示器自身更新的频率)组成。李>
- 被动与主动渲染 - 在主事件循环中使用paint方法进行绘画是被动的,而在您自己的线程中渲染是主动的。
- 双缓冲和翻页 - 更流畅的绘图意味着更好的感知性能和更好的用户体验。
- BufferStrategy 和 BufferCapabilities - 允许您绘制到表面和组件的类,而无需知道使用的缓冲区数量或用于显示它们的技术,并帮助您确定图形设备的功能。
链接教程中有几个全屏独占模式示例。
【讨论】:
JFrame setUndecorated(true) 方法
【讨论】:
在为游戏提供全屏 OpenGL 用户界面时,我使用 JOGL 完成了这项工作。这很容易。我相信该功能也被添加到 Java 版本 5 中,但是很久以前我已经忘记了如何做到这一点(编辑:参见上面的答案了解如何)。
【讨论】:
使用此代码:
JFrame frame = new JFrame();
// set properties
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setUndecorated(true);
frame.setVisible(true);
确保setUndecorated() 出现在setVisible() 之前,否则它将不起作用。
【讨论】:
这实际上取决于您使用什么来显示您的界面,即 AWT/Spring 或 OpenGL 等。
Java 有一个全屏独占模式 API - see this tutorial from Sun。
【讨论】: