【问题标题】:How to program a full-screen mode in Java?如何在 Java 中编写全屏模式?
【发布时间】:2023-12-24 18:57:01
【问题描述】:

我希望我的应用程序具有全屏模式。执行此操作的最简单方法是什么,我需要为此使用第三方库还是 JDK 中已经提供了此功能?

【问题讨论】:

    标签: java graphics fullscreen


    【解决方案1】:

    试试Full-Screen Exclusive Mode API。它是在 JDK 1.4 版本中引入的。部分功能包括:

    • 全屏独占模式 - 允许您暂停窗口系统,以便直接在屏幕上进行绘图。
    • 显示模式 - 由尺寸(显示器的宽度和高度,以像素为单位)、位深(每个像素的位数)和刷新率(显示器自身更新的频率)组成。李>
    • 被动与主动渲染 - 在主事件循环中使用paint方法进行绘画是被动的,而在您自己的线程中渲染是主动的。
    • 双缓冲和翻页 - 更流畅的绘图意味着更好的感知性能和更好的用户体验。
    • BufferStrategy 和 BufferCapabilities - 允许您绘制到表面和组件的类,而无需知道使用的缓冲区数量或用于显示它们的技术,并帮助您确定图形设备的功能。

    链接教程中有几个全屏独占模式示例。

    【讨论】:

      【解决方案2】:

      JFrame setUndecorated(true) 方法

      【讨论】:

        【解决方案3】:

        在为游戏提供全屏 OpenGL 用户界面时,我使用 JOGL 完成了这项工作。这很容易。我相信该功能也被添加到 Java 版本 5 中,但是很久以前我已经忘记了如何做到这一点(编辑:参见上面的答案了解如何)。

        【讨论】:

          【解决方案4】:

          使用此代码:

          JFrame frame = new JFrame();
          // set properties
          frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
          frame.setUndecorated(true);
          frame.setVisible(true);
          

          确保setUndecorated() 出现在setVisible() 之前,否则它将不起作用。

          【讨论】:

          • 不起作用。全屏显示在屏幕的下角,无法关闭窗口。
          【解决方案5】:

          这实际上取决于您使用什么来显示您的界面,即 AWT/Spring 或 OpenGL 等。

          Java 有一个全屏独占模式 API - see this tutorial from Sun

          【讨论】: