Module  java.desktop
软件包  java.awt

Class GraphicsDevice



  • public abstract class GraphicsDevice
    extends Object
    GraphicsDevice课程描述了可能在特定图形环境中可用的图形设备。 这些包括屏幕和打印机设备。 请注意,在GraphicsEnvironment可以有许多屏幕和许多打印机。 每个图形设备都有一个或多个GraphicsConfiguration对象相关联。 这些对象指定可以使用GraphicsDevice的不同配置。

    在多屏幕环境中,可以使用GraphicsConfiguration对象在多个屏幕上渲染组件。 下面的代码示例演示了如何创建一个JFrame为每个对象GraphicsConfiguration在每个屏幕设备上GraphicsEnvironment

       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

    另请参见:
    GraphicsEnvironmentGraphicsConfiguration
    • 字段详细信息

      • TYPE_RASTER_SCREEN

        public static final int TYPE_RASTER_SCREEN
        设备是光栅画面。
        另请参见:
        Constant Field Values
      • TYPE_PRINTER

        public static final int TYPE_PRINTER
        设备是打印机。
        另请参见:
        Constant Field Values
      • TYPE_IMAGE_BUFFER

        public static final int TYPE_IMAGE_BUFFER
        设备是一个图像缓冲区。 该缓冲区可以驻留在设备或系统内存中,但不能由用户物理查看。
        另请参见:
        Constant Field Values
    • 方法详细信息

      • getType

        public abstract int getType​()
        返回此类型 GraphicsDevice
        结果
        该类型为 GraphicsDevice ,可以是TYPE_RASTER_SCREEN,TYPE_PRINTER或TYPE_IMAGE_BUFFER。
        另请参见:
        TYPE_RASTER_SCREENTYPE_PRINTERTYPE_IMAGE_BUFFER
      • getIDstring

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

        一个特定的程序可能会在一个GraphicsDevice中使用多个GraphicsEnvironment 此方法返回String识别特定GraphicsDevice在本地GraphicsEnvironment 虽然没有公开的方法来设置这个String ,但程序员可以使用String进行调试。 Java String运行环境的供应商可以格式化String的返回值。 要确定如何解释String的值,请联系您的Java运行时的供应商。 要查找供应商是谁,从您的程序中,使用“java.vendor”调用System类的getProperty方法。

        结果
        一个 String是这个 GraphicsDevice的标识。
      • getConfigurations

        public abstract GraphicsConfiguration[] getConfigurations​()
        返回与此 GraphicsDevice相关联的所有 GraphicsConfiguration对象。
        结果
        与该 GraphicsDevice相关联的 GraphicsConfiguration对象的数组。
      • getDefaultConfiguration

        public abstract GraphicsConfiguration getDefaultConfiguration​()
        返回默认 GraphicsConfiguration与此相关 GraphicsDevice
        结果
        默认 GraphicsConfiguration这个 GraphicsDevice
      • isFullScreenSupported

        public boolean isFullScreenSupported​()
        如果这个GraphicsDevice支持全屏独占模式,则返回true 如果安装了SecurityManager,其checkPermission方法将使用AWTPermission("fullScreenExclusive")进行调用。 isFullScreenSupported仅在授予该权限isFullScreenSupported返回true。
        结果
        是否可以为此图形设备提供全屏独占模式
        从以下版本开始:
        1.4
        另请参见:
        AWTPermission
      • setFullScreenWindow

        public void setFullScreenWindow​(Window w)
        进入全屏模式,或返回窗口模式。 输入的全屏模式可能是独占的或模拟的。 独家模式仅在isFullScreenSupported返回true可用。

        独家模式意味着:

        • Windows不能与全屏窗口重叠。 所有其他应用程序窗口将始终以Z顺序显示在全屏窗口的下方。
        • 随时可以在设备上只有一个全屏窗口,所以在现有的全屏窗口中调用此方法将导致现有的全屏窗口返回窗口模式。
        • 输入法窗口被禁用。 建议调用Component.enableInputMethods(false)使组件成为输入法框架的非客户端。

        模拟全屏模式将窗口调整到屏幕最大可能的可见区域。 然而,本地窗口系统可以修改所请求的几何相关数据,使得Window对象以与桌面设置紧密相对的方式放置和调整大小。

        当进入全屏模式时,如果要用作全屏窗口的窗口不可见,则此方法将使其可见。 当返回到窗口模式时,它将保持可见。

        当进入全屏模式时,所有的半透明效果都将重新设置为窗口。 其形状设置为null ,不透明度值设置为1.0f,背景色alpha设置为255(完全不透明)。 返回窗口模式时,这些值不会恢复。

        如何在全屏模式下操作装饰窗口是未指定和依赖平台的。 因此,建议使用setUndecorated方法关闭FrameDialog对象中的装饰。

        当从专用全屏窗口返回窗口模式时,通过调用setDisplayMode进行的任何显示更改都将自动恢复到原始状态。

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

        public Window getFullScreenWindow​()
        如果设备处于全屏模式,则返回表示全屏窗口的 Window对象。
        结果
        全屏窗口,或 null如果设备不是全屏模式。
        从以下版本开始:
        1.4
        另请参见:
        setFullScreenWindow(Window)
      • 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()
      • isWindowTranslucencySupported

        public boolean isWindowTranslucencySupported​(GraphicsDevice.WindowTranslucency translucencyKind)
        返回此图形设备是否支持给定的半透明级别。
        参数
        translucencyKind - 一种半透明支持
        结果
        是否支持给定的半透明度
        从以下版本开始:
        1.7