Module java.desktop
Package java.awt

Class Toolkit

java.lang.Object
java.awt.Toolkit

public abstract class Toolkit extends Object
这个类是所有实际的抽象窗口工具包实现的抽象超类。 Toolkit 类的子类用于将各种组件绑定到特定的本机工具包实现。

如果没有明确指定相反的情况,许多GUI事件可能会异步地传递给用户。 同样,许多GUI操作可能会异步执行。 这意味着如果设置了组件的状态,然后立即查询状态,则返回的值可能尚未反映所请求的更改。 此行为包括但不限于:

  • 滚动到指定位置。
    例如,调用ScrollPane.setScrollPosition然后调用getScrollPosition,如果原始请求尚未被处理,则可能返回不正确的值。
  • 将焦点从一个组件移动到另一个组件。
    有关更多信息,请参见转移焦点的时间,在Swing教程中的一个部分。
  • 使顶级容器可见。
    WindowFrameDialog上调用setVisible(true)可能会异步发生。
  • 设置顶级容器的大小或位置。
    WindowFrameDialog上调用setSizesetBoundssetLocation的调用将被转发到底层窗口管理系统,并可能被忽略或修改。有关更多信息,请参见Window

大多数应用程序不应直接调用此类中的任何方法。 Toolkit 定义的方法是将java.awt包中的平台无关类与java.awt.peer中的对应类连接起来的“粘合剂”。 Toolkit 定义的一些方法直接查询本机操作系统。

自:
1.0
  • Field Details

    • desktopProperties

      protected final Map<String,Object> desktopProperties
      桌面属性。
    • desktopPropsSupport

      protected final PropertyChangeSupport desktopPropsSupport
      桌面属性更改支持。
  • Constructor Details

    • Toolkit

      protected Toolkit()
      构造一个Toolkit
  • Method Details

    • loadSystemColors

      protected void loadSystemColors(int[] systemColors) throws HeadlessException
      使用当前系统颜色值填充作为参数提供的整数数组。
      参数:
      systemColors - 一个整数数组。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自:
      1.1
      参见:
    • setDynamicLayout

      public void setDynamicLayout(boolean dynamic) throws HeadlessException
      控制容器在调整大小期间是否动态验证,或在调整大小完成后静态验证。 使用isDynamicLayoutActive()检测此功能在此程序中是否启用,并且此功能是否由此操作系统和/或窗口管理器支持。 请注意,此功能不受所有平台支持,反之,此功能在某些平台上无法关闭。 在不支持动态调整大小的平台上(或始终支持的平台上),设置此属性不起作用。 请注意,此功能可以作为某些平台的操作系统或窗口管理器的属性设置或取消设置。 在这些平台上,必须在操作系统或窗口管理器级别设置动态调整大小属性,然后此方法才能生效。 此方法不会更改底层操作系统或窗口管理器的支持或设置。 可以使用getDesktopProperty("awt.dynamicLayoutSupported")方法查询OS/WM支持。
      参数:
      dynamic - 如果为true,则容器在调整大小时应重新布局其组件。如果为false,则布局将在调整大小完成后进行验证。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.4
      参见:
    • isDynamicLayoutSet

      protected boolean isDynamicLayoutSet() throws HeadlessException
      返回容器在调整大小时是否动态验证布局,还是在调整大小完成后静态验证。注意:此方法返回以编程方式设置的值;它不反映操作系统或窗口管理器在调整大小时动态布局的支持,或当前操作系统或窗口管理器的设置。可以使用getDesktopProperty("awt.dynamicLayoutSupported")查询OS/WM支持。
      返回:
      如果容器的验证是动态进行的,则返回true,如果验证在调整大小完成后进行,则返回false。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.4
      参见:
    • isDynamicLayoutActive

      public boolean isDynamicLayoutActive() throws HeadlessException
      返回底层操作系统和/或窗口管理器当前是否启用了调整大小时容器的动态布局。如果平台支持,可以使用setDynamicLayout(boolean)来以编程方式启用或禁用平台动态布局。无论切换是否受支持,或者指定了truefalse作为参数,或者根本没有调用过,此方法将返回当前平台行为,并将由JDK遵循以确定调整大小期间的布局策略。

      如果动态布局当前处于非活动状态,则容器在调整大小完成时重新布局其组件。因此,Component.validate()方法将仅在每次调整大小时调用一次。如果动态布局当前处于活动状态,则容器将在每次本机调整大小事件上重新布局其组件,并且每次都将调用validate()方法。可以使用getDesktopProperty("awt.dynamicLayoutSupported")方法查询OS/WM支持。此属性将反映平台功能,但不足以判断它当前是否已启用。

      返回:
      如果调整大小时容器的动态布局当前处于活动状态,则返回true,否则返回false。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()方法返回true
      自从:
      1.4
      参见:
    • getScreenSize

      public abstract Dimension getScreenSize() throws HeadlessException
      获取屏幕的尺寸。在具有多个显示器的系统上,使用主显示器。多屏感知显示尺寸可从GraphicsConfigurationGraphicsDevice中获取。
      返回:
      此工具包屏幕的尺寸,以像素为单位。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      参见:
    • getScreenResolution

      public abstract int getScreenResolution() throws HeadlessException
      返回每英寸的屏幕分辨率。
      返回:
      此工具包屏幕分辨率,以每英寸点数为单位。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      参见:
    • getScreenInsets

      public Insets getScreenInsets(GraphicsConfiguration gc) throws HeadlessException
      获取屏幕的插图。
      参数:
      gc - 一个GraphicsConfiguration
      返回:
      此工具包屏幕的插图,以像素为单位。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.4
      参见:
    • getColorModel

      public abstract ColorModel getColorModel() throws HeadlessException
      确定此工具包屏幕的颜色模型。

      ColorModel是一个抽象类,封装了图像的像素值与其红色、绿色、蓝色和alpha分量之间的转换能力。

      此工具包方法由Component类的getColorModel方法调用。

      返回:
      此工具包屏幕的颜色模型。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      参见:
    • getFontList

      @Deprecated public abstract String[] getFontList()
      返回此工具包中可用字体的名称。

      对于1.1版本,以下字体名称已被弃用(替代名称如下):

      • TimesRoman(使用Serif)
      • Helvetica(使用SansSerif)
      • Courier(使用Monospaced)

      ZapfDingbats字体名称在1.1版本中也已弃用,但这些字符从0x2700开始在Unicode中定义,并且从1.1版本开始Java支持这些字符。

      返回:
      此工具包中可用字体的名称。
      参见:
    • getFontMetrics

      @Deprecated public abstract FontMetrics getFontMetrics(Font font)
      Deprecated.
      As of JDK version 1.2, replaced by the Font method getLineMetrics.
      获取用于字体渲染的屏幕设备度量。
      参数:
      font - 一个字体
      返回:
      此工具包中指定字体的屏幕度量
      参见:
    • sync

      public abstract void sync()
      同步此工具包的图形状态。某些窗口系统可能会对图形事件进行缓冲。

      此方法确保显示是最新的。对于动画很有用。

    • getDefaultToolkit

      public static Toolkit getDefaultToolkit()
      获取默认工具包。

      如果设置了名为"java.awt.headless"的系统属性为true,则使用Toolkit的无头实现,否则使用Toolkit的默认特定于平台的实现。

      如果此Toolkit不是无头实现,并且如果存在,则将加载AccessibilityProvider的服务提供者,如果由系统属性javax.accessibility.assistive_technologies指定。

      设置此属性的示例是使用-Djavax.accessibility.assistive_technologies=MyServiceProvider调用Java。除了MyServiceProvider之外,可以使用逗号分隔的列表指定其他服务提供者。在创建AWT工具包后加载服务提供者。

      如果通过系统属性"javax.accessibility.assistive_technologies"提供的辅助技术提供程序列表为空字符串或仅包含空格字符,则将其忽略。所有其他错误都通过AWTError异常处理。

      辅助技术提供程序列表中指定的名称用于查询每个服务提供者实现。如果请求的名称与服务提供者的名称匹配,则将调用AccessibilityProvider.activate()方法以激活匹配的服务提供者。

      实现要求:
      如果未使用系统属性指定辅助技术服务提供程序,则此实现将查找位于以下位置的属性文件:
      • ${user.home}/.accessibility.properties
      • ${java.home}/conf/accessibility.properties
      只会查阅找到的这些文件中的第一个。请求的服务提供程序通过设置assistive_technologies=属性来指定。可以指定单个提供程序或逗号分隔的提供程序列表。
      返回:
      默认工具包。
      抛出:
      AWTError - 如果加载辅助技术时出现错误。
      参见:
    • getImage

      public abstract Image getImage(String filename)
      从指定文件获取像素数据的图像,其格式可以是GIF、JPEG或PNG。底层工具包尝试将对相同文件名的多个请求解析为相同的返回图像。

      由于用于实现共享Image对象的机制可能会持续保留不再使用的图像,开发人员被鼓励使用createImage变体来实现自己的图像缓存。如果指定文件中的图像数据发生更改,则从此方法返回的Image对象可能仍包含从先前调用后从文件加载的陈旧信息。可以通过在返回的Image上调用flush方法手动丢弃先前加载的图像数据。

      此方法首先检查是否安装了安全管理器。如果是,则该方法使用指定的文件调用安全管理器的checkRead方法,以确保允许访问图像。

      参数:
      filename - 包含以识别文件格式存储的像素数据的文件的名称。
      返回:
      从指定文件获取像素数据的图像。
      抛出:
      SecurityException - 如果存在安全管理器且其checkRead方法不允许该操作。
      参见:
    • getImage

      public abstract Image getImage(URL url)
      从指定URL获取像素数据的图像。指定URL引用的像素数据必须是以下格式之一:GIF、JPEG或PNG。底层工具包尝试将对相同URL的多个请求解析为相同的返回图像。

      由于用于实现共享Image对象的机制可能会持续保留不再使用的图像,开发人员被鼓励使用createImage变体来实现自己的图像缓存。如果指定URL处存储的图像数据发生更改,则从此方法返回的Image对象可能仍包含从先前调用后从URL获取的陈旧信息。可以通过在返回的Image上调用flush方法手动丢弃先前加载的图像数据。

      此方法首先检查是否安装了安全管理器。如果是,则该方法使用相应权限调用安全管理器的checkPermission方法,以确保允许访问图像。如果连接到指定URL需要URLPermissionSocketPermission,则用于安全检查的是URLPermission

      参数:
      url - 用于获取像素数据的URL。
      返回:
      从指定URL获取像素数据的图像。
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作。
      参见:
    • createImage

      public abstract Image createImage(String filename)
      从指定文件获取像素数据的图像。返回的图像是一个新对象,不会与此方法或其getImage变体的任何其他调用者共享。

      此方法首先检查是否安装了安全管理器。如果是,则该方法使用指定文件调用安全管理器的checkRead方法,以确保允许图像创建。

      参数:
      filename - 包含以识别文件格式存储的像素数据的文件的名称。
      返回:
      从指定文件获取像素数据的图像。
      抛出:
      SecurityException - 如果存在安全管理器且其checkRead方法不允许该操作。
      参见:
    • createImage

      public abstract Image createImage(URL url)
      从指定URL获取像素数据的图像。返回的图像是一个新对象,不会与此方法或其getImage变体的任何其他调用者共享。

      此方法首先检查是否安装了安全管理器。如果是,则该方法使用相应权限调用安全管理器的checkPermission方法,以确保允许图像创建。如果连接到指定URL需要URLPermissionSocketPermission,则用于安全检查的是URLPermission

      参数:
      url - 用于获取像素数据的URL。
      返回:
      从指定URL获取像素数据的图像。
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作。
      参见:
    • prepareImage

      public abstract boolean prepareImage(Image image, int width, int height, ImageObserver observer)
      准备图像以进行渲染。

      如果宽度和高度参数的值都为-1,则此方法将准备图像以在默认屏幕上进行渲染;否则,此方法将准备一个在指定宽度和高度上在默认屏幕上进行渲染的图像。

      图像数据会在另一个线程中异步下载,并生成图像的适当缩放屏幕表示。

      此方法由组件的prepareImage方法调用。

      有关此方法返回的标志的信息可以在ImageObserver接口的定义中找到。

      参数:
      image - 要为其准备屏幕表示的图像。
      width - 所需屏幕表示的宽度,或-1
      height - 所需屏幕表示的高度,或-1
      observer - 要在准备图像时通知的ImageObserver对象。
      返回:
      如果图像已完全准备,则返回true;否则返回false
      参见:
    • checkImage

      public abstract int checkImage(Image image, int width, int height, ImageObserver observer)
      指示正在准备用于显示的指定图像的构造状态。

      如果宽度和高度参数的值都为-1,则此方法返回此工具包中指定图像的屏幕表示的构造状态。否则,此方法返回指定宽度和高度处图像的缩放表示的构造状态。

      此方法不会导致图像开始加载。应用程序必须调用prepareImage来强制加载图像。

      此方法由组件的checkImage方法调用。

      有关此方法返回的标志的信息可以在ImageObserver接口的定义中找到。

      参数:
      image - 正在检查其状态的图像。
      width - 正在检查其状态的缩放版本的宽度,或-1
      height - 正在检查其状态的缩放版本的高度,或-1
      observer - 要在准备图像时通知的ImageObserver对象。
      返回:
      当前可用的图像数据的ImageObserver标志的按位包含OR
      参见:
    • createImage

      public abstract Image createImage(ImageProducer producer)
      使用指定的图像生成器创建图像。
      参数:
      producer - 要使用的图像生成器。
      返回:
      具有指定图像生成器的图像。
      参见:
    • createImage

      public Image createImage(byte[] imagedata)
      创建一个解码存储在指定字节数组中的图像。

      数据必须是某种图像格式,如GIF或JPEG,该格式由此工具包支持。

      参数:
      imagedata - 一个字节数组,表示支持的图像格式中的图像数据。
      返回:
      一个图像。
      自版本:
      1.1
    • createImage

      public abstract Image createImage(byte[] imagedata, int imageoffset, int imagelength)
      创建一个解码存储在指定字节数组中的图像,并指定偏移量和长度。数据必须是某种图像格式,如GIF或JPEG,该格式由此工具包支持。
      参数:
      imagedata - 一个字节数组,表示支持的图像格式中的图像数据。
      imageoffset - 数组中数据起始位置的偏移量。
      imagelength - 数组中数据的长度。
      返回:
      一个图像。
      自版本:
      1.1
    • getPrintJob

      public abstract PrintJob getPrintJob(Frame frame, String jobtitle, Properties props)
      获取一个PrintJob对象,该对象是在工具包平台上启动打印操作的结果。

      此方法的每个实际实现应首先检查是否安装了安全管理器。如果有安全管理器,则该方法应调用安全管理器的checkPrintJobAccess方法,以确保允许启动打印操作。如果使用了checkPrintJobAccess的默认实现(即未覆盖该方法),则会导致调用安全管理器的checkPermission方法,该方法具有RuntimePermission("queuePrintJob")权限。

      参数:
      frame - 打印对话框的父级。不得为null。
      jobtitle - PrintJob的标题。空标题等效于""。
      props - 包含零个或多个属性的Properties对象。属性未标准化,且在各种实现之间不一致。因此,需要对作业和页面控制的PrintJob使用此函数的版本,该版本接受JobAttributes和PageAttributes对象。此对象可能会在退出时更新以反映用户的作业选择。可能为null。
      返回:
      一个PrintJob对象,如果用户取消了打印作业,则返回null
      抛出:
      NullPointerException - 如果frame为null
      SecurityException - 如果此线程不允许启动打印作业请求
      自版本:
      1.1
      参见:
    • getPrintJob

      public PrintJob getPrintJob(Frame frame, String jobtitle, JobAttributes jobAttributes, PageAttributes pageAttributes)
      获取一个PrintJob对象,该对象是在工具包平台上启动打印操作的结果。

      此方法的每个实际实现应首先检查是否安装了安全管理器。如果有安全管理器,则该方法应调用安全管理器的checkPrintJobAccess方法,以确保允许启动打印操作。如果使用了checkPrintJobAccess的默认实现(即未覆盖该方法),则会导致调用安全管理器的checkPermission方法,该方法具有RuntimePermission("queuePrintJob")权限。

      参数:
      frame - 打印对话框的父级。不得为null。
      jobtitle - PrintJob的标题。空标题等效于""。
      jobAttributes - 一组将控制PrintJob的作业属性。属性将根据作业属性文档中概述的用户选择进行更新。可能为null。
      pageAttributes - 一组将控制PrintJob的页面属性。属性将应用于作业中的每一页。属性将根据页面属性文档中概述的用户选择进行更新。可能为null。
      返回:
      一个PrintJob对象,如果用户取消了打印作业,则返回null
      抛出:
      NullPointerException - 如果frame为null
      IllegalArgumentException - 如果pageAttributes指定了不同的横向和纵向分辨率。如果此线程具有访问文件系统的权限,并且jobAttributes指定打印到文件,指定的目标文件存在但是一个目录而不是一个常规文件,不存在但无法创建,或由于任何其他原因无法打开。但是,在打印到文件的情况下,如果还要求显示对话框,则用户将有机会选择文件并继续打印。对话框将确保所选的输出文件在从此方法返回之前有效。
      SecurityException - 如果此线程不允许启动打印作业请求,或者如果jobAttributes指定打印到文件,并且此线程不允许访问文件系统
      自版本:
      1.3
      参见:
    • beep

      public abstract void beep()
      根据本地系统设置和硬件功能发出音频蜂鸣。
      自版本:
      1.1
    • getSystemClipboard

      public abstract Clipboard getSystemClipboard() throws HeadlessException
      获取与本地平台提供的剪贴板设施进行交互的系统剪贴板的单例实例。此剪贴板使Java程序与使用本机剪贴板设施的本机应用程序之间进行数据传输。

      除了系统剪贴板的getTransferData()方法返回的任何默认格式文本外,还可以使用以下格式:

      • DataFlavor.stringFlavor
      • DataFlavor.plainTextFlavor(已弃用
      java.awt.datatransfer.StringSelection一样,如果请求的格式为DataFlavor.plainTextFlavor或等效格式,则将返回一个Reader。注意:对于DataFlavor.plainTextFlavor和等效DataFlavors,系统剪贴板的getTransferData()方法的行为与DataFlavor.plainTextFlavor的定义不一致。因此,对于DataFlavor.plainTextFlavor和等效格式的支持已弃用

      此方法的每个实际实现应首先检查是否安装了安全管理器。如果有安全管理器,则该方法应调用安全管理器的checkPermission方法来检查AWTPermission("accessClipboard")

      返回:
      系统剪贴板
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自版本:
      1.1
      参见:
    • getSystemSelection

      public Clipboard getSystemSelection() throws HeadlessException
      获取系统选择的单例实例作为Clipboard对象。这允许应用程序读取和修改当前的系统范围选择。

      应用程序负责在用户使用鼠标或键盘选择文本时更新系统选择。通常,这是通过在支持文本选择的所有Component上安装FocusListener来实现的,并在传递给该ComponentFOCUS_GAINEDFOCUS_LOST事件之间,在Component内部更改选择时更新系统选择Clipboard。正确更新系统选择确保Java应用程序与同时在系统上运行的本机应用程序和其他Java应用程序正确交互。请注意,java.awt.TextComponentjavax.swing.text.JTextComponent已经遵守了这一政策。在使用这些类及其子类时,开发人员无需编写任何额外的代码。

      某些平台不支持系统选择Clipboard。在这些平台上,此方法将返回null。在这种情况下,应用程序无需按照上述描述更新系统选择Clipboard

      此方法的每个实际实现应首先检查是否安装了安全管理器。如果有安全管理器,则该方法应调用安全管理器的checkPermission方法来检查AWTPermission("accessClipboard")

      返回:
      系统选择作为Clipboard,如果本机平台不支持系统选择Clipboard,则返回null
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.4
      参见:
    • getMenuShortcutKeyMask

      @Deprecated(since="10") public int getMenuShortcutKeyMask() throws HeadlessException
      Deprecated.
      It is recommended that extended modifier keys and getMenuShortcutKeyMaskEx() be used instead
      确定哪个修饰键是菜单快捷方式的适当加速键。

      菜单快捷方式,体现在MenuShortcut类中,由MenuBar类处理。

      默认情况下,此方法返回Event.CTRL_MASK。如果Control键不是加速键的正确键,则Toolkit实现应覆盖此方法。

      返回:
      在此工具包上用于菜单快捷方式的Event类上的修饰符掩码。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.1
      参见:
    • getMenuShortcutKeyMaskEx

      public int getMenuShortcutKeyMaskEx() throws HeadlessException
      确定哪个扩展修饰键是菜单快捷方式的适当加速键。

      菜单快捷方式,体现在MenuShortcut类中,由MenuBar类处理。

      默认情况下,此方法返回InputEvent.CTRL_DOWN_MASK。如果Control键不是加速键的正确键,则Toolkit实现应覆盖此方法。

      返回:
      在此工具包上用于菜单快捷方式的InputEvent类上的修饰符掩码
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      10
      参见:
    • getLockingKeyState

      public boolean getLockingKeyState(int keyCode) throws UnsupportedOperationException
      返回键盘上给定锁定键当前是否处于“打开”状态。有效的键代码是VK_CAPS_LOCKVK_NUM_LOCKVK_SCROLL_LOCKVK_KANA_LOCK
      参数:
      keyCode - 键代码
      返回:
      如果给定键当前处于“打开”状态,则返回true;否则返回false
      抛出:
      IllegalArgumentException - 如果keyCode不是有效的键代码
      UnsupportedOperationException - 如果主机系统不允许以编程方式获取此键的状态,或者键盘没有此键
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.3
      参见:
    • setLockingKeyState

      public void setLockingKeyState(int keyCode, boolean on) throws UnsupportedOperationException
      设置键盘上给定锁定键的状态。有效的键代码是VK_CAPS_LOCKVK_NUM_LOCKVK_SCROLL_LOCKVK_KANA_LOCK

      根据平台的不同,设置锁定键的状态可能涉及事件处理,因此可能无法立即通过getLockingKeyState观察到。

      参数:
      keyCode - 键代码
      on - 键的状态
      抛出:
      IllegalArgumentException - 如果keyCode不是有效的键代码
      UnsupportedOperationException - 如果主机系统不允许以编程方式设置此键的状态,或者键盘没有此键
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.3
      参见:
    • getNativeContainer

      protected static Container getNativeContainer(Component c)
      为本机对等体提供查询本机容器的能力,给定本机组件(例如,直接父级可能是轻量级)。
      参数:
      c - 要获取容器的组件
      返回:
      该组件的本机容器对象
    • createCustomCursor

      public Cursor createCustomCursor(Image cursor, Point hotSpot, String name) throws IndexOutOfBoundsException, HeadlessException
      创建一个新的自定义光标对象。如果要显示的图像无效,则光标将被隐藏(完全透明),并且热点将设置为(0, 0)。

      请注意,多帧图像是无效的,可能会导致此方法挂起。

      参数:
      cursor - 激活光标时要显示的图像
      hotSpot - 大光标的热点的X和Y;热点值必须小于getBestCursorSize返回的尺寸
      name - 光标的本地化描述,供Java辅助功能使用
      返回:
      创建的光标
      抛出:
      IndexOutOfBoundsException - 如果热点值超出光标的边界
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自从:
      1.2
      参见:
    • getBestCursorSize

      public Dimension getBestCursorSize(int preferredWidth, int preferredHeight) throws HeadlessException
      返回最接近所需尺寸的支持光标尺寸。仅支持单个光标尺寸的系统将返回该尺寸,而不管所需尺寸如何。不支持自定义光标的系统将返回尺寸为0, 0。

      注意:如果使用的图像的尺寸与支持的尺寸(由此方法返回)不匹配,则Toolkit实现将尝试将图像调整为支持的尺寸。由于转换低分辨率图像很困难,因此不能保证不支持的尺寸的光标图像的质量。因此,建议调用此方法并使用适当的图像,以便不进行图像转换。

      参数:
      preferredWidth - 组件希望使用的首选光标宽度。
      preferredHeight - 组件希望使用的首选光标高度。
      返回:
      最接近的支持的光标大小,如果Toolkit实现不支持自定义光标,则返回0,0的尺寸。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自版本:
      1.2
      参见:
    • getMaximumCursorColors

      public int getMaximumCursorColors() throws HeadlessException
      返回Toolkit支持的自定义光标调色板中的最大颜色数。

      注意:如果使用的图像的调色板中的颜色数超过支持的最大值,则Toolkit实现将尝试将调色板压缩到最大值。由于转换低分辨率图像很困难,因此无法保证具有比系统支持的颜色更多的光标图像的质量。因此建议调用此方法并使用适当的图像,以便不进行图像转换。

      返回:
      最大颜色数,如果此Toolkit实现不支持自定义光标,则返回零。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自版本:
      1.2
      参见:
    • isFrameStateSupported

      public boolean isFrameStateSupported(int state) throws HeadlessException
      返回Toolkit是否支持Frame的此状态。此方法告知是否支持例如最大化或最小化的UI概念。对于"复合"状态(例如Frame.ICONIFIED|Frame.MAXIMIZED_VERT),它将始终返回false。换句话说,规则是只有带有单个框架状态常量作为参数的查询才是有意义的。

      请注意,支持给定概念是一个依赖于平台的特性。由于本机限制,Toolkit对象可能会报告特定状态为支持的,但同时Toolkit对象将无法将该状态应用于给定的框架。这种情况有以下两个后果:

      • 仅当此方法的返回值为false时,才实际指示给定状态不受支持。如果方法返回true,则给定状态仍可能不受支持和/或对特定框架不可用。
      • 开发人员应考虑检查通过WindowEvent.getNewState()方法接收到的WindowEvent的值,而不是假设给定给setExtendedState()方法的状态一定会被应用。有关更多信息,请参阅Frame.setExtendedState(int)方法的文档。
      参数:
      state - 命名的框架状态常量之一。
      返回:
      如果此Toolkit实现支持此框架状态,则返回true,否则返回false
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自版本:
      1.4
      参见:
    • getProperty

      public static String getProperty(String key, String defaultValue)
      获取具有指定键和默认值的属性。如果未找到属性,则此方法返回defaultValue。
      参数:
      key - 键
      defaultValue - 默认值
      返回:
      属性的值,如果未找到属性,则返回默认值
    • getSystemEventQueue

      public final EventQueue getSystemEventQueue()
      获取应用程序或小程序的EventQueue实例。根据Toolkit实现的不同,可能会为不同的小程序返回不同的EventQueues。因此,小程序不应假设此方法返回的EventQueue实例将被其他小程序或系统共享。

      如果存在安全管理器,则将调用其checkPermission方法来检查AWTPermission("accessEventQueue")

      返回:
      EventQueue对象
      抛出:
      SecurityException - 如果设置了安全管理器并且拒绝访问EventQueue
      参见:
    • getSystemEventQueueImpl

      protected abstract EventQueue getSystemEventQueueImpl()
      获取应用程序或小程序的EventQueue实例,而不检查访问权限。出于安全原因,只能从Toolkit子类中调用此方法。
      返回:
      EventQueue对象
    • createDragGestureRecognizer

      public <T extends DragGestureRecognizer> T createDragGestureRecognizer(Class<T> abstractRecognizerClass, DragSource ds, Component c, int srcActions, DragGestureListener dgl)
      创建所请求的具体、平台相关的DragGestureRecognizer类的子类,并将其与指定的DragSource、Component和DragGestureListener关联。子类应重写此方法以提供自己的实现。
      类型参数:
      T - 要创建的DragGestureRecognizer的类型
      参数:
      abstractRecognizerClass - 所需识别器的抽象类
      ds - DragSource
      c - DragGestureRecognizer的目标组件
      srcActions - 手势允许的操作
      dgl - DragGestureListener
      返回:
      新对象或null。如果GraphicsEnvironment.isHeadless()返回true,则始终返回null。
      参见:
    • getDesktopProperty

      public final Object getDesktopProperty(String propertyName)
      获取指定桌面属性的值。桌面属性是Toolkit全局性质的具有唯一名称的资源值。通常它也是对底层平台相关桌面设置的抽象表示。有关AWT支持的桌面属性的更多信息,请参见AWT Desktop Properties
      参数:
      propertyName - 属性名称
      返回:
      指定桌面属性的值
    • setDesktopProperty

      protected final void setDesktopProperty(String name, Object newValue)
      将指定的桌面属性设置为指定的值,并触发属性更改事件以通知任何侦听器该值已更改。
      参数:
      name - 属性名称
      newValue - 新的属性值
    • lazilyLoadDesktopProperty

      protected Object lazilyLoadDesktopProperty(String name)
      有机会延迟评估桌面属性值。
      参数:
      name - 名称
      返回:
      桌面属性或null
    • initializeDesktopProperties

      protected void initializeDesktopProperties()
      initializeDesktopProperties
    • addPropertyChangeListener

      public void addPropertyChangeListener(String name, PropertyChangeListener pcl)
      为指定的桌面属性添加指定的属性更改侦听器。当添加PropertyChangeListenerProxy对象时,其属性名称将被忽略,并添加包装的侦听器。如果namenullpclnull,则不会抛出异常,也不执行任何操作。
      参数:
      name - 要监听的属性的名称
      pcl - 属性更改侦听器
      自版本:
      1.2
      参见:
    • removePropertyChangeListener

      public void removePropertyChangeListener(String name, PropertyChangeListener pcl)
      删除指定的桌面属性的指定属性更改侦听器。当删除PropertyChangeListenerProxy对象时,其属性名称将被忽略,并删除包装的侦听器。如果namenullpclnull,则不会抛出异常,也不执行任何操作。
      参数:
      name - 要移除的属性的名称
      pcl - 属性更改侦听器
      自版本:
      1.2
      参见:
    • getPropertyChangeListeners

      public PropertyChangeListener[] getPropertyChangeListeners()
      返回在此Toolkit上注册的所有属性更改侦听器的数组。返回的数组包含将侦听器与桌面属性的名称关联的PropertyChangeListenerProxy对象。
      返回:
      所有此Toolkit的PropertyChangeListener对象包装在java.beans.PropertyChangeListenerProxy对象中,如果未添加任何侦听器,则返回空数组
      自版本:
      1.4
      参见:
    • getPropertyChangeListeners

      public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
      返回与指定桌面属性名称关联的所有属性更改侦听器的数组。
      参数:
      propertyName - 属性名称
      返回:
      返回指定桌面属性名称相关联的所有PropertyChangeListener对象,如果没有添加此类监听器则返回空数组
      自版本:
      1.4
      参见:
    • isAlwaysOnTopSupported

      public boolean isAlwaysOnTopSupported()
      返回此工具包是否支持始终置顶模式。要检测特定窗口是否支持始终置顶模式,请使用Window.isAlwaysOnTopSupported()
      返回:
      true,如果当前工具包支持始终置顶模式,否则返回false
      自版本:
      1.6
      参见:
    • isModalityTypeSupported

      public abstract boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
      返回此工具包是否支持给定的模态类型。如果创建具有不受支持的模态类型的对话框,则使用Dialog.ModalityType.MODELESS
      参数:
      modalityType - 要检查此工具包是否支持的模态类型
      返回:
      true,如果当前工具包支持给定的模态类型,否则返回false
      自版本:
      1.6
      参见:
    • isModalExclusionTypeSupported

      public abstract boolean isModalExclusionTypeSupported(Dialog.ModalExclusionType modalExclusionType)
      返回此工具包是否支持给定的模态排除类型。如果在窗口上设置了不受支持的模态排除类型属性,则使用Dialog.ModalExclusionType.NO_EXCLUDE
      参数:
      modalExclusionType - 要检查此工具包是否支持的模态排除类型
      返回:
      true,如果当前工具包支持给定的模态排除类型,否则返回false
      自版本:
      1.6
      参见:
    • addAWTEventListener

      public void addAWTEventListener(AWTEventListener listener, long eventMask)
      添加一个AWTEventListener以接收系统范围内分派的符合给定eventMask的所有AWTEvents。

      首先,如果存在安全管理器,则将调用其checkPermission方法,传入AWTPermission("listenToAllAWTEvents")权限。这可能导致SecurityException。

      eventMask是要接收的事件类型的位掩码。它是通过对AWTEvent中定义的事件掩码进行按位OR运算构造的。

      注意:不建议正常应用程序使用事件监听器,而是仅用于支持特殊用途的设施,包括支持辅助功能、事件记录/回放和诊断跟踪。如果监听器为null,则不会抛出异常,也不执行任何操作。

      参数:
      listener - 事件监听器
      eventMask - 要接收的事件类型的位掩码
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作
      自版本:
      1.2
      参见:
    • removeAWTEventListener

      public void removeAWTEventListener(AWTEventListener listener)
      从接收分派的AWTEvents中移除一个AWTEventListener。

      首先,如果存在安全管理器,则将调用其checkPermission方法,传入AWTPermission("listenToAllAWTEvents")权限。这可能导致SecurityException。

      注意:不建议正常应用程序使用事件监听器,而是仅用于支持特殊用途的设施,包括支持辅助功能、事件记录/回放和诊断跟踪。如果监听器为null,则不会抛出异常,也不执行任何操作。

      参数:
      listener - 事件监听器
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作
      自版本:
      1.2
      参见:
    • getAWTEventListeners

      public AWTEventListener[] getAWTEventListeners()
      返回在此工具包上注册的所有AWTEventListener的数组。如果存在安全管理器,则将调用其checkPermission方法,传入AWTPermission("listenToAllAWTEvents")权限。这可能导致SecurityException。监听器可以在AWTEventListenerProxy对象中返回,该对象还包含给定监听器的事件掩码。请注意,多次添加的监听器对象在返回的数组中只出现一次。
      返回:
      所有AWTEventListener或如果当前没有注册监听器则返回空数组
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作
      自版本:
      1.4
      参见:
    • getAWTEventListeners

      public AWTEventListener[] getAWTEventListeners(long eventMask)
      返回在此工具包上注册的所有AWTEventListener的数组,这些监听器侦听eventMask参数中指定的所有事件类型。如果存在安全管理器,则将调用其checkPermission方法,传入AWTPermission("listenToAllAWTEvents")权限。这可能导致SecurityException。监听器可以在AWTEventListenerProxy对象中返回,该对象还包含给定监听器的事件掩码。请注意,多次添加的监听器对象在返回的数组中只出现一次。
      参数:
      eventMask - 要侦听的事件类型的位掩码
      返回:
      在此工具包上注册的所有AWTEventListener数组,用于指定事件类型,如果当前没有注册此类监听器则返回空数组
      抛出:
      SecurityException - 如果存在安全管理器且其checkPermission方法不允许该操作
      自版本:
      1.4
      参见:
    • mapInputMethodHighlight

      public abstract Map<TextAttribute,?> mapInputMethodHighlight(InputMethodHighlight highlight) throws HeadlessException
      返回给定输入法突出显示的抽象级别描述的视觉属性映射,如果找不到映射,则返回null。忽略输入法突出显示的样式字段。返回的映射是不可修改的。
      参数:
      highlight - 输入法突出显示
      返回:
      样式属性映射,或null
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless返回true
      自版本:
      1.3
      参见:
    • areExtraMouseButtonsEnabled

      public boolean areExtraMouseButtonsEnabled() throws HeadlessException
      报告是否允许处理和发布来自额外鼠标按钮的事件到EventQueue中。
      要更改返回值,需要在Toolkit类初始化之前设置sun.awt.enableExtraMouseButtons属性。可以通过以下命令在应用程序启动时进行此设置:
       java -Dsun.awt.enableExtraMouseButtons=false Application
       
      或者,可以通过以下代码在应用程序中进行设置:
       System.setProperty("sun.awt.enableExtraMouseButtons", "true");
       
      Toolkit类初始化之前未设置此属性,该属性将被初始化为true。在Toolkit类初始化后更改此值将不会产生任何效果。
      返回:
      如果允许处理和发布来自额外鼠标按钮的事件,则返回true;否则返回false
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
      自版本:
      1.7
      参见: