java.awt

接口
异常
错误
java.lang.Object
  继承者 java.awt.GraphicsDevice

public abstract class GraphicsDevice
     
extends Object

GraphicsDevice 类描述可以在特定图形环境中使用的图形设备。这些设备包括屏幕和打印机设备。注意,在 GraphicsEnvironment 实例中可以有许多屏幕和许多打印机。每个图形设备都有一个或多个与之关联的 GraphicsConfiguration 对象。这些对象指定可以使用 GraphicsDevice 的不同配置。

在多屏幕环境中,GraphicsConfiguration 对象可用于在多屏幕上呈现组件。以下代码示例演示了如何在 GraphicsEnvironment 中针对每个屏幕设备的每个 GraphicsConfiguration 创建 JFrame 对象。

   GraphicsEnvironment ge = GraphicsEnvironment.
   getLocalGraphicsEnvironment();
   GraphicsDevice[] gs = ge.getScreenDevices();
   for (int j = 0; j < gs.length; j++) { 
      GraphicsDevice gd = gs[j];
      GraphicsConfiguration[] gc =
        gd.getConfigurations();
      for (int i=0; i < gc.length; i++) {
         JFrame f = new
         JFrame(gs[j].getDefaultConfiguration());
         Canvas c = new Canvas(gc[i]); 
         Rectangle gcBounds = gc[i].getBounds();
         int xoffs = gcBounds.x;
         int yoffs = gcBounds.y;
           f.getContentPane().add(c);
           f.setLocation((i*50)+xoffs, (i*60)+yoffs);
         f.show();
      }
   }
 

有关全屏独占模式 API 的更多信息,请参阅 Full-Screen Exclusive Mode API Tutorial

另请参见:
GraphicsEnvironment, GraphicsConfiguration

字段摘要
static int TYPE_IMAGE_BUFFER
          设备是图像缓冲区。
static int TYPE_PRINTER
          设备是打印机。
static int TYPE_RASTER_SCREEN
          设备是光栅屏幕。
 
构造方法摘要
protected GraphicsDevice()
          这是一个无法直接实例化的抽象类。
 
方法摘要
 int getAvailableAcceleratedMemory()
          此方法返回此设备上加速内存中可用的字节数。
 GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
          返回通过了 GraphicsConfigTemplate 中定义的标准的可能“最佳”配置。
abstract  GraphicsConfiguration[] getConfigurations()
          返回与此 GraphicsDevice 关联的所有 GraphicsConfiguration 对象。
abstract  GraphicsConfiguration getDefaultConfiguration()
          返回与此 GraphicsDevice 关联的默认 GraphicsConfiguration
 DisplayMode getDisplayMode()
          返回此 GraphicsDevice 的当前显示模式。
 DisplayMode[] getDisplayModes()
          返回可用于此 GraphicsDevice 的所有显示模式。
 Window getFullScreenWindow()
          如果设备处于全屏模式,则返回表示全屏窗口的 Window 对象。
abstract  String getIDstring()
          返回与此 GraphicsDevice 关联的标识字符串。
abstract  int getType()
          返回此 GraphicsDevice 的类型。
 boolean isDisplayChangeSupported()
          如果此 GraphicsDevice 支持低层显示更改,则返回 true
 boolean isFullScreenSupported()
          如果此 GraphicsDevice 支持全屏独占模式,则返回 true
 void setDisplayMode(DisplayMode dm)
          设置此图形设备的显示模式。
 void setFullScreenWindow(Window w)
          进入全屏模式,或返回窗口化模式。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

TYPE_RASTER_SCREEN

public static final int TYPE_RASTER_SCREEN
设备是光栅屏幕。

另请参见:
常量字段值

TYPE_PRINTER

public static final int TYPE_PRINTER
设备是打印机。

另请参见:
常量字段值

TYPE_IMAGE_BUFFER

public static final int TYPE_IMAGE_BUFFER
设备是图像缓冲区。此缓冲区可驻留在设备或系统内存中,但用户无法实际看到它。

另请参见:
常量字段值
构造方法详细信息

GraphicsDevice

protected GraphicsDevice()
这是一个无法直接实例化的抽象类。必须从合适的工厂或查询方法中获取实例。

另请参见:
GraphicsEnvironment.getScreenDevices(), GraphicsEnvironment.getDefaultScreenDevice(), GraphicsConfiguration.getDevice()
方法详细信息

getType

public abstract int getType()
返回此 GraphicsDevice 的类型。

返回:
GraphicsDevice 的类型,可以是 TYPE_RASTER_SCREEN、TYPE_PRINTER 或 TYPE_IMAGE_BUFFER。
另请参见:
TYPE_RASTER_SCREEN, TYPE_PRINTER, TYPE_IMAGE_BUFFER

getIDstring

public abstract String getIDstring()
返回与此 GraphicsDevice 关联的标识字符串。

GraphicsEnvironment 中,某个特定程序可能使用多个 GraphicsDevice。此方法返回一个标识本地 GraphicsEnvironment 中特定 GraphicsDeviceString。尽管没有设置此 String 的公共方法,但程序员仍然可以在调试时使用此 String。JavaTM Runtime Environment 供应商可以格式化 String 的返回值。要确定如何解释 String 值,请与 Java Runtime 供应商联系。要查找谁是供应商,可以从程序中使用“java.vendor”调用 System 类的 getProperty 方法。

返回:
一个作为此 GraphicsDevice 标识的 String

getConfigurations

public abstract GraphicsConfiguration[] getConfigurations()
返回与此 GraphicsDevice 关联的所有 GraphicsConfiguration 对象。

返回:
一个与此 GraphicsDevice 关联的 GraphicsConfiguration 对象的数组。

getDefaultConfiguration

public abstract GraphicsConfiguration getDefaultConfiguration()
返回与此 GraphicsDevice 关联的默认 GraphicsConfiguration

返回:
GraphicsDevice 的默认 GraphicsConfiguration

getBestConfiguration

public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
返回通过了 GraphicsConfigTemplate 中定义的标准的可能“最佳”配置。

参数:
gct - 用于获取有效 GraphicsConfigurationGraphicsConfigTemplate 对象
返回:
一个通过了指定 GraphicsConfigTemplate 中定义的标准的 GraphicsConfiguration
另请参见:
GraphicsConfigTemplate

isFullScreenSupported

public boolean isFullScreenSupported()
如果此 GraphicsDevice 支持全屏独占模式,则返回 true。如果安装了 SecurityManager,则将使用 AWTPermission("fullScreenExclusive") 调用它的 checkPermission 方法。只有授权时 isFullScreenSupported 才会返回 true。

返回:
此图形设备是否可以使用全屏独占模式
从以下版本开始:
1.4
另请参见:
AWTPermission

setFullScreenWindow

public void setFullScreenWindow(Window w)
进入全屏模式,或返回窗口化模式。进入的全屏模式可以是独占的,也可以是模拟的。只有 isFullScreenSupported 返回 true 时,独占模式才可用。

独占模式意味着:

  • Windows 无法重叠全屏窗口。所有其他应用程序窗口总是以 Z-order 出现在全屏窗口后面。
  • 任何时候设备上都只能有一个全屏窗口,因此,当已存在全屏窗口时调用此方法将导致现有的全屏窗口返回为窗口化模式。
  • 禁用输入方法窗口。建议调用 Component.enableInputMethods(false),使组件成为非客户端的输入方法框架。

模拟的全屏模式将窗口大小调整为屏幕大小,并将它置于 (0,0)。

当进入全屏模式时,如果看不到作为全屏窗口使用的窗口,此方法将会使其可见。当返回到窗口化模式时,窗口仍将保持可见。

当从独占全屏窗口模式返回到窗口化模式时,任何调用 setDisplayMode 做出的显示更改都将自动恢复原状。

参数:
w - 一个用作全屏窗口的窗口;如果返回到窗口化模式,则为 null。一些平台希望全屏窗口成为顶层组件(即 Frame);因此这里最好使用 Frame,而不用 Window。
从以下版本开始:
1.4
另请参见:
isFullScreenSupported(), getFullScreenWindow(), setDisplayMode(java.awt.DisplayMode), Component.enableInputMethods(boolean), Component.setVisible(boolean)

getFullScreenWindow

public Window getFullScreenWindow()
如果设备处于全屏模式,则返回表示全屏窗口的 Window 对象。

返回:
全屏窗口;如果设备未在全屏模式,则返回 null
从以下版本开始:
1.4
另请参见:
setFullScreenWindow(Window)

isDisplayChangeSupported

public boolean isDisplayChangeSupported()
如果此 GraphicsDevice 支持低层显示更改,则返回 true。某些平台可能只在全屏独占模式中允许低层显示更改(即如果 isFullScreenSupported() 返回 true,且应用程序已经使用 setFullScreenWindow(java.awt.Window) 进入全屏模式)。

返回:
此图形设备是否支持低层显示更改。
从以下版本开始:
1.4
另请参见:
setDisplayMode(java.awt.DisplayMode)

setDisplayMode

public void setDisplayMode(DisplayMode dm)
设置此图形设备的显示模式。只在 isDisplayChangeSupported() 返回 true 时才允许此方法,假如支持全屏独占模式的话(即 isFullScreenSupported() 返回 true),还可能要求首先使用 setFullScreenWindow(java.awt.Window) 进入全屏独占模式。

该显示模式必须是由 getDisplayModes() 返回的显示模式之一,只有一种情况例外:传递带有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率的显示模式时,将从带有匹配宽度、高度和位深的可用显示模式列表中选择一个显示模式。但是,只有在位深为 DisplayMode.BIT_DEPTH_MULTI 的显示模式存在于 getDisplayModes() 返回的列表中时,才能传递这种显示模式。

代码示例:


 Frame frame;
 DisplayMode newDisplayMode;
 GraphicsDevice gd;
 // create a Frame, select desired DisplayMode from the list of modes
 // returned by gd.getDisplayModes() ...

 if (gd.isFullScreenSupported()) {
     gd.setFullScreenWindow(frame);
 } else {
    // proceed in non-full-screen mode
    frame.setSize(...);
    frame.setLocation(...);
    frame.setVisible(true);
 }

 if (gd.isDisplayChangeSupported()) {
     gd.setDisplayMode(newDisplayMode);
 }
 

参数:
dm - 此图形设备的新显示模式。
抛出:
IllegalArgumentException - 如果提供的 DisplayModenull,或者在 getDisplayModes 返回的数组中不可用
UnsupportedOperationException - 如果 isDisplayChangeSupported 返回 false
从以下版本开始:
1.4
另请参见:
getDisplayMode(), getDisplayModes(), isDisplayChangeSupported()

getDisplayMode

public DisplayMode getDisplayMode()
返回此 GraphicsDevice 的当前显示模式。如果返回的显示模式是不确定的,则允许它具有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率。同样,如果返回的显示模式是不确定的或者支持多个位深,则允许它具有 DisplayMode.BIT_DEPTH_MULTI 位深。

返回:
此图形设备的当前显示模式。
从以下版本开始:
1.4
另请参见:
setDisplayMode(DisplayMode)

getDisplayModes

public DisplayMode[] getDisplayModes()
返回可用于此 GraphicsDevice 的所有显示模式。如果返回的显示模式是不确定的,则允许它具有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率。同样,如果返回的显示模式是不确定的或者支持多个位深,则允许它具有 DisplayMode.BIT_DEPTH_MULTI 位深。

返回:
此图形设备可用的所有显示模式。
从以下版本开始:
1.4

getAvailableAcceleratedMemory

public int getAvailableAcceleratedMemory()
此方法返回此设备上加速内存中可用的字节数。某些图像在加速内存中是按先来先服务的方式创建或缓存的。在某些操作系统中,此内存是有限资源。调用此方法并慎重安排图像的创建和刷新能够使应用程序最有效地使用这些有限的资源。
注意,返回的数字是可用内存数量的快照;将某些图像分配到该内存中可能仍然存在问题。例如,根据操作系统、驱动程序、内存配置和线程情况的不同,给定的图像可能无法使用报告的全部内存空间。对于与 VolatileImage 关联的 ImageCapabilities 对象,还有更多的查询方法,可用于确定是否在加速内存中创建一个特殊的 VolatileImage。

返回:
加速内存中可用的字节数。返回值为负指示此 GraphicsDevice 上的加速内存量是不确定的。
从以下版本开始:
1.4
另请参见:
Image.flush(), ImageCapabilities.isAccelerated()