文档

Java™ 教程-Java Tutorials 中文版
全屏独占模式
Trail: Bonus
Lesson: Full-Screen Exclusive Mode API

全屏独占模式

使用 Microsoft DirectX API 的程序员可能已经熟悉全屏独占模式。其他程序员可能对这个概念有些新意。在任何一种情况下,全屏独占模式都是 J2SE™ 1.4 版的强大功能,它允许程序员暂停窗口系统,以便可以直接在屏幕上完成绘图。

这在很多方面都与通常的 GUI 程序略有不同。在传统的 Java GUI 程序中,AWT 负责从操作系统,event dispatch thread (事件调度线程) 传播 paint events (绘制事件),并调用 AWT 的 Component.paint 适当的方法。在全屏独占应用中,绘画通常由程序本身主动完成。另外,传统的 GUI 应用程序仅限于用户选择的屏幕的位深度和大小。在全屏独占应用程序中,程序可以控制屏幕的位深度和大小(display mode (显示模式))。最后,在某些平台上,许多更高级的技术,例如 page flipping (页面翻转)(下面讨论)和立体缓冲(利用为每只眼睛使用一组单独的帧的系统),首先需要应用程序在全屏独占模式。

硬件加速图像基础

要了解全屏独占模式 API,你需要了解硬件加速图像的一些基本原理。VolatileImage 接口封装了可能利用或不利用硬件加速的 surface。这些 surface 可能在操作系统的命令下失去其硬件加速或其内存(因此,名称为“volatile”)。有关易失性图像的更多信息,请参阅 VolatileImage Tutorial(即将推出)。

全屏独占模式通过 java.awt.GraphicsDevice 对象处理。有关所有可用屏幕图形设备的列表(在单显示器系统或多显示器系统中),可以在本地 java.awt.GraphicsEnvironment 上调用方法 getScreenDevices;对于默认(主)屏幕(单显示器系统上的唯一屏幕),你可以调用方法 getDefaultScreenDevice

拥有图形设备后,可以调用以下方法之一:

编程提示

以下是有关使用全屏独占模式进行编程的一些提示:


Previous page: Full-Screen Exclusive Mode API
Next page: Display Mode