Display Mode

一旦应用程序处于全屏独占 Pattern,它便可以利用主动设置显示 Pattern 的优势。显示 Pattern(java\.awt\.DisplayMode)由大小(显示器的宽度和高度,以像素为单位),位深度(每像素的位数)和刷新率(显示器更新频率)组成。某些 os 允许您同时使用多个位深度,在这种情况下,特殊值BIT_DEPTH_MULTI用作位深度的值。另外,某些 os 可能对刷新率没有任何控制(或者您可能不关心刷新率设置)。在这种情况下,特殊值REFRESH_RATE_UNKNOWN用作刷新率值。

如何设置显示 Pattern

要获取当前的显示 Pattern,只需在图形设备上调用getDisplayMode方法。要获取所有可能的显示 Pattern 的列表,请调用getDisplayModes方法。不论您是否处于全屏独占 Pattern,均可随时调用getDisplayModegetDisplayModes

在try更改显示 Pattern 之前,您应该首先调用isDisplayChangeSupported方法。如果此方法返回false,则 os 不支持更改显示 Pattern。

仅在全屏排他 Pattern 下才能更改显示 Pattern。要更改显示 Pattern,请以所需的显示 Pattern 调用setDisplayMode方法。如果显示 Pattern 不可用,不支持更改显示 Pattern 或未以全屏独占 Pattern 运行,则会引发运行时异常。

更改显示 Pattern 的原因

设置显示 Pattern 的主要原因是性能。如果应用程序选择显示的图像与屏幕共享相同的位深,则它可以更快地运行。同样,如果您可以指望显示器具有特定的尺寸,则可以简化到该显示器的绘图,因为您不必根据用户对显示器的设置方式来缩放。

Programming Tips

以下是一些选择和设置显示 Pattern 的技巧:

  • 在try更改图形设备上的显示 Pattern 之前,请检查isDisplayChangeSupported方法返回的值。

  • 在try更改显示 Pattern 之前,请确保您处于全屏独占 Pattern。

  • 与使用全屏 Pattern 一样,在try...finally子句中时,设置显示 Pattern 更为可靠:

GraphicsDevice myDevice;
Window myWindow;
DisplayMode newDisplayMode;
DisplayMode oldDisplayMode 
    = myDevice.getDisplayMode();

try {
    myDevice.setFullScreenWindow(myWindow);
    myDevice.setDisplayMode(newDisplayMode);
    ...
} finally {
    myDevice.setDisplayMode(oldDisplayMode);
    myDevice.setFullScreenWindow(null);
}
  • 在为您的应用程序选择显示 Pattern 时,您可能需要保留一个首选显示 Pattern 列表,然后从可用显示 Pattern 列表中选择最佳显示 Pattern。

  • 作为后备,如果您想要的显示 Pattern 不可用,您可能只想以固定大小在窗口 Pattern 下运行。