# 显示模式

> 原文： [https://docs.oracle.com/javase/tutorial/extra/fullscreen/displaymode.html](https://docs.oracle.com/javase/tutorial/extra/fullscreen/displaymode.html)

一旦应用程序处于全屏独占模式，它可以利用主动设置 _ 显示模式 _。显示模式（ `java.awt.DisplayMode` ）由大小（监视器的宽度和高度，以像素为单位），位深度（每像素的位数）和刷新率（频率等）组成。监控更新本身）。某些操作系统允许您同时使用多个位深度，在这种情况下，特殊值 `BIT_DEPTH_MULTI` 用于位深度值。此外，某些操作系统可能无法控制刷新率（或者您可能不关心刷新率设置）。在这种情况下，特殊值 `REFRESH_RATE_UNKNOWN` 用于刷新率值。

## 如何设置显示模式

要获得当前显示模式，只需在图形设备上调用 `getDisplayMode` 方法即可。要获取所有可能的显示模式列表，请调用 `getDisplayModes` 方法。无论您是否处于全屏独占模式，都可以随时调用 `getDisplayMode` 和 `getDisplayModes` 。

在尝试更改显示模式之前，应首先调用 `isDisplayChangeSupported` 方法。如果此方法返回 `false` ，则操作系统不支持更改显示模式。

只有在全屏独占模式下才能更改显示模式。要更改显示模式，请使用所需的显示模式调用 `setDisplayMode` 方法。如果显示模式不可用，不支持显示模式更改，或者未以全屏独占模式运行，则将引发运行时异常。

## 更改显示模式的原因

设置显示模式的主要原因是 _ 性能 _。如果应用程序显示的图像与屏幕共享相同的位深度，则应用程序可以更快地运行。此外，如果您可以将显示器指定为特定尺寸，则可以使绘图更加简单，因为您无需根据用户设置显示的方式向下或向上缩放。

## 编程技巧

以下是选择和设置显示模式的一些提示：

*   在尝试更改图形设备上的显示模式之前，请检查 `isDisplayChangeSupported` 方法返回的值。
*   在尝试更改显示模式之前，请确保您处于全屏独占模式。
*   与使用全屏模式一样，在`try...finally`子句中设置显示模式更加稳健：

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

    try {
        myDevice.setFullScreenWindow(myWindow);
        myDevice.setDisplayMode(newDisplayMode);
        ...
    } finally {
        myDevice.setDisplayMode(oldDisplayMode);
        myDevice.setFullScreenWindow(null);
    }

    ```

*   为应用程序选择显示模式时，您可能希望保留首选显示模式列表，然后从可用显示模式列表中选择最佳显示模式。
*   作为后备，如果您想要的显示模式不可用，您可能只想以固定大小在窗口模式下运行。