Module java.desktop
Package java.awt

Class GraphicsEnvironment

java.lang.Object
java.awt.GraphicsEnvironment

public abstract class GraphicsEnvironment extends Object
GraphicsEnvironment类描述了Java(tm)应用程序在特定平台上可用的GraphicsDevice对象和Font对象的集合。这个GraphicsEnvironment中的资源可能是本地的,也可能是在远程机器上。GraphicsDevice对象可以是屏幕、打印机或图像缓冲区,并且是Graphics2D绘图方法的目的地。每个GraphicsDevice都有多个与之关联的GraphicsConfiguration对象。这些对象指定了GraphicsDevice可以使用的不同配置。
参见:
  • Constructor Details

    • GraphicsEnvironment

      protected GraphicsEnvironment()
      这是一个抽象类,不能直接实例化。必须从适当的工厂或查询方法获取实例。
  • Method Details

    • getLocalGraphicsEnvironment

      public static GraphicsEnvironment getLocalGraphicsEnvironment()
      返回本地GraphicsEnvironment
      返回:
      本地GraphicsEnvironment
    • isHeadless

      public static boolean isHeadless()
      测试此环境中是否支持显示器、键盘和鼠标。如果此方法返回true,则从依赖于显示器、键盘或鼠标的Toolkit和GraphicsEnvironment的区域抛出HeadlessException。
      返回:
      如果此环境无法支持显示器、键盘和鼠标,则返回true;否则返回false
      自:
      1.4
      参见:
    • isHeadlessInstance

      public boolean isHeadlessInstance()
      返回此图形环境中是否支持显示器、键盘和鼠标。如果返回true,则将从依赖于显示器、键盘或鼠标的图形环境的区域抛出HeadlessException
      返回:
      如果此环境中可以支持显示器、键盘和鼠标,则返回true;否则返回false
      自:
      1.4
      参见:
    • getScreenDevices

      public abstract GraphicsDevice[] getScreenDevices() throws HeadlessException
      返回所有屏幕GraphicsDevice对象的数组。
      返回:
      包含表示屏幕设备的所有GraphicsDevice对象的数组
      抛出:
      HeadlessException - 如果isHeadless()返回true
      参见:
    • getDefaultScreenDevice

      public abstract GraphicsDevice getDefaultScreenDevice() throws HeadlessException
      返回默认屏幕GraphicsDevice
      返回:
      表示默认屏幕设备的GraphicsDevice
      抛出:
      HeadlessException - 如果isHeadless()返回true
      参见:
    • createGraphics

      public abstract Graphics2D createGraphics(BufferedImage img)
      返回一个用于渲染到指定BufferedImageGraphics2D对象。
      参数:
      img - 指定的BufferedImage
      返回:
      用于渲染到指定BufferedImageGraphics2D
      抛出:
      NullPointerException - 如果img为null
    • getAllFonts

      public abstract Font[] getAllFonts()
      返回一个包含此GraphicsEnvironment中所有可用字体的一点大小实例的数组。典型用法是允许用户选择特定字体。然后,应用程序可以通过在所选实例上调用deriveFont方法来设置字体大小和各种字体属性。

      此方法为应用程序提供了对用于呈现文本的Font实例的最精确控制。如果此GraphicsEnvironment中的字体具有多个可编程变体,数组中只返回一个该Font的实例,其他变体必须由应用程序派生。

      如果此环境中的字体具有多个可编程变体,例如多主字体,数组中只返回一个该字体的实例。其他变体必须由应用程序派生。

      返回:
      一个Font对象数组
      自:
      1.2
      参见:
    • getAvailableFontFamilyNames

      public abstract String[] getAvailableFontFamilyNames()
      返回一个包含此GraphicsEnvironment中所有字体系列名称的数组,这些名称针对默认区域设置进行了本地化,如Locale.getDefault()返回的那样。

      典型用法是向用户展示选择特定系列名称的界面。然后,应用程序可以在创建字体时指定此名称,结合样式,如粗体或斜体,使字体系统能够在同一字体系列中的多个字体中选择最佳匹配。

      返回:
      一个包含针对默认区域设置进行本地化的字体系列名称的String数组,如果此区域设置下不存在名称,则返回适当的替代名称。
      自:
      1.2
      参见:
    • getAvailableFontFamilyNames

      public abstract String[] getAvailableFontFamilyNames(Locale l)
      返回一个包含此GraphicsEnvironment中所有字体系列名称的数组,这些名称针对指定的区域设置进行了本地化。

      典型用法是向用户展示选择特定系列名称的界面。然后,应用程序可以在创建字体时指定此名称,结合样式,如粗体或斜体,使字体系统能够在同一字体系列中的多个字体中选择最佳匹配。

      参数:
      l - 表示特定地理、政治或文化区域的Locale对象。指定null等效于指定Locale.getDefault()
      返回:
      一个包含针对指定Locale进行本地化的字体系列名称的String数组,如果指定区域设置下不存在名称,则返回适当的替代名称。
      自:
      1.2
      参见:
    • registerFont

      public boolean registerFont(Font font)
      在此GraphicsEnvironment中注册一个已创建Font。已创建的字体是通过调用Font.createFont(int, java.io.InputStream)返回的字体,或者通过调用Font.deriveFont(int, float)从已创建的字体派生而来的。在为这样的字体调用此方法之后,它可以用于通过名称或族名构造新的Font,并且在此应用程序或小程序的执行上下文中由getAvailableFontFamilyNames()getAllFonts()枚举。这意味着小程序无法以使其对其他小程序可见的方式注册字体。

      此方法可能不注册字体并因此返回false的原因包括:

      • 字体不是一个已创建Font
      • 字体与此GraphicsEnvironment中已存在的非已创建Font冲突。例如,如果名称是系统字体的名称,或者是Font类文档中描述的逻辑字体。字体是否也会与具有与系统字体相同族名的字体冲突是依赖于实现的。

        请注意,应用程序可以用新的字体取代先前创建的字体的注册。

      参数:
      font - 要注册的字体
      返回:
      如果font成功注册在此GraphicsEnvironment中,则返回true。
      抛出:
      NullPointerException - 如果font为null
      自:
      1.6
    • preferLocaleFonts

      public void preferLocaleFonts()
      表示在逻辑字体映射到物理字体时偏好于特定区域设置的字体。调用此方法表示字体呈现应主要使用特定于主要书写系统的字体(由默认编码和初始默认区域设置指示的书写系统)。例如,如果主要书写系统是日语,则应尽可能使用日语字体呈现字符,而其他字体仅用于日语字体没有字形的字符。

      由于调用此方法导致的字体呈现行为的实际更改取决于实现;它可能根本没有任何效果,或者请求的行为可能已经与默认行为匹配。字体呈现在轻量级和对等组件中的行为可能不同。由于调用此方法请求不同的字体,客户端应预期不同的度量,并且可能需要重新计算窗口大小和布局。因此,此方法应在用户界面初始化之前调用。

      自:
      1.5
    • preferProportionalFonts

      public void preferProportionalFonts()
      表示在逻辑字体映射到物理字体时偏好于比例字体而不是非比例字体(例如双倍间隔的CJK字体)。如果默认映射包含存在比例和非比例变体的字体,则调用此方法表示映射应使用比例变体。

      由于调用此方法导致的字体呈现行为的实际更改取决于实现;它可能根本没有任何效果。字体呈现在轻量级和对等组件中的行为可能不同。由于调用此方法请求不同的字体,客户端应预期不同的度量,并且可能需要重新计算窗口大小和布局。因此,此方法应在用户界面初始化之前调用。

      自:
      1.5
    • getCenterPoint

      public Point getCenterPoint() throws HeadlessException
      返回Windows应居中的点。建议检查居中的Windows以确保它们适合可用的显示区域,使用getMaximumWindowBounds()。
      返回:
      Windows应居中的点
      抛出:
      HeadlessException - 如果isHeadless()返回true
      自:
      1.4
      参见:
    • getMaximumWindowBounds

      public Rectangle getMaximumWindowBounds() throws HeadlessException
      返回居中的Windows的最大边界。这些边界考虑了本机窗口系统中的对象,如任务栏和菜单栏。返回的边界将位于单个显示器上,有一个例外:在Windows应跨越所有显示器居中的多屏系统上,此方法返回整个显示区域的边界。

      要获取单个显示器的可用边界,请使用GraphicsConfiguration.getBounds()Toolkit.getScreenInsets()

      返回:
      居中的Windows的最大边界
      抛出:
      HeadlessException - 如果isHeadless()返回true
      自:
      1.4
      参见: