Module  javafx.graphics
软件包  javafx.scene.input

Class Clipboard

  • 已知直接子类:
    Dragboard


    public class Clipboard
    extends Object
    表示操作系统剪贴板,数据可能在例如剪切,复制和粘贴操作期间放置。

    要访问常规系统剪贴板,请使用以下代码:

       Clipboard clipboard = Clipboard.getSystemClipboard();  

    在应用程序中只有一个实例的系统剪贴板,所以如果你这样选择的话,将其引用到某个地方是完全可以接受的。

    剪贴板的作用是在任何一个时间在剪贴板上单个概念项目的概念,尽管它可能会以不同的格式放置在剪贴板上。 例如,用户可以在HTML编辑器中选择文本,然后按ctrl + c或cmd + c将其复制。 在这种情况下,剪贴板上可能会以HTML和纯文本形式提供相同的文字。 剪贴板上有两个数据副本,但它们都代表相同的数据。

    使用setContent(java.util.Map<javafx.scene.input.DataFormat, java.lang.Object>)方法在剪贴板上指定内容。 首先,构建一个ClipboardContent对象,然后调用setContent。 每次调用setContent时,剪贴板上的任何先前数据将被清除,并替换为此新内容。

       final Clipboard clipboard = Clipboard.getSystemClipboard(); final ClipboardContent content = new ClipboardContent(); content.putString("Some text"); content.putHtml("<b>Some</b> text"); clipboard.setContent(content);  

    ClipboardContent类只是一个地图,方便处理添加到剪贴板的常用数据类型。

    由于相同数据的多个表示可能存在于剪贴板上,并且由于不同的应用程序具有用于处理不同内容类型的不同功能,所以重要的是在剪贴板上放置尽可能多的数据表示,以便于外部应用程序。 请注意,有时操作系统在某些情况下可能会有所帮助,并为您添加多种类型。 例如,当您指定RTF类型时,Mac可能会为您设置纯文本字符串。 如何和在什么情况下发生这种情况超出了本规范的范围,请参阅您的操作系统文档。

    从剪贴板读取数据时,首先要查找最丰富的支持类型很重要。 例如,如果我有一个支持嵌入图像和媒体格式的文本文档,当从剪贴板粘贴内容时,我应该首先检查内容是否可以表示为媒体或图像。 如果没有,那么我可以检查文档类型支持的RTF或HTML或任何富文本格式。 如果没有,那么我可能只需要一个String。

    或者,例如,如果我有一个纯文本文档,那么我会简单地获得一个String表示,并使用它,如果可用。 我可以检查看剪贴板是否有“hasHtml”或“hasString”。

       if (clipboard.hasString()) { ... }  

    除了普通或内置的类型,您可以将任意数据放入剪贴板(假定它是可序列化的)。

    内容类型由DataFormat对象定义。 DataFormat类定义了一个不可变对象,并且有许多常用DataFormat类型的静态final字段。 当然,应用程序特定的DataFormat类型也可以被声明和使用。 以下两个方法是等效的(第二个调用将覆盖第一个!)

       ClipboardContent content = new ClipboardContent(); content.putString("some text"); content.put(DataFormat.PLAIN_TEXT, "other text");  

    在没有自己的窗口系统的嵌入式平台上,从Clipboard.getSystemClipboard()返回的剪贴板可能无法从JavaFX应用程序外部访问。

    如果存在安全管理员,应用程序必须具有FXPermissionaccessClipboard ”,以便从Clipboard.getSystemClipboard()返回的剪贴板可从JavaFX应用程序外部访问。 为了与以前版本的JDK兼容,等效的AWTPermissionAWTPermission ”还将允许FX剪贴板从JavaFX应用程序外部访问。

    如果应用程序没有权限,或者平台不支持共享剪贴板,则Clipboard.getSystemClipboard()返回的剪贴板可用于在一个JavaFX应用程序的不同部分之间交换数据,但不能用于在多个应用程序之间交换数据。

    从以下版本开始:
    JavaFX 2.0
    • 方法摘要

      所有方法  静态方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      void clear​()
      清除任何和所有内容的剪贴板。
      Object getContent​(DataFormat dataFormat)
      返回给定类型的此剪贴板中存储的内容,如果没有此类型的内容,则返回null。
      Set<DataFormat> getContentTypes​()
      获取此剪贴板实例上具有已在剪贴板上注册的关联数据的DataFormat类型集。
      List<File> getFiles​()
      从先前已注册的剪贴板获取文件列表。
      String getHtml​()
      从以前注册的剪贴板获取HTML文本字符串。
      Image getImage​()
      从先前已注册的剪贴板获取图像。
      String getRtf​()
      从以前注册的剪贴板获取RTF文本字符串。
      String getString​()
      从以前注册的剪贴板中获取纯文本字符串。
      static Clipboard getSystemClipboard​()
      获取当前系统剪贴板,通过该剪贴板可以存储和检索数据。
      String getUrl​()
      从先前已注册的剪贴板获取URL字符串。
      boolean hasContent​(DataFormat dataFormat)
      测试给定DataFormat类型的此剪贴板上是否有任何内容。
      boolean hasFiles​()
      获取文件列表(DataFormat.FILES)是否已在此剪贴板上注册。
      boolean hasHtml​()
      获取HTML文本String(DataFormat.HTML)是否已在此剪贴板上注册。
      boolean hasImage​()
      获取图像(DataFormat.IMAGE)是否已在此剪贴板上注册。
      boolean hasRtf​()
      获取RTF字符串(DataFormat.RTF)是否已在此剪贴板上注册。
      boolean hasString​()
      获取是否在此剪贴板上注册了纯文本String(DataFormat.PLAIN_TEXT)。
      boolean hasUrl​()
      获取是否在此剪贴板上注册了一个url String(DataFormat.URL)。
      boolean setContent​(Map<DataFormat,Object> content)
      将内容放在剪贴板上。
    • 方法详细信息

      • getSystemClipboard

        public static Clipboard getSystemClipboard​()
        获取当前系统剪贴板,通过该剪贴板可以存储和检索数据。 JavaFX应用程序只有一个系统剪贴板。
        结果
        单个系统剪贴板,用于剪切/复制/粘贴操作
      • clear

        public final void clear​()
        清除任何和所有内容的剪贴板。 任何后续调用getContentTypes()返回把更多的内容在剪贴板将导致空集之前。
      • getContentTypes

        public final Set<DataFormat> getContentTypes​()
        获取此剪贴板实例上具有已在剪贴板上注册的关联数据的DataFormat类型集。 这个集合永远是非空和不可变的。 如果剪贴板随后被修改,则此返回的集合不会更新。
        结果
        一个非空的不可变的内容类型集合。
      • setContent

        public final boolean setContent​(Map<DataFormat,Object> content)
        将内容放在剪贴板上。 此调用将始终导致从剪贴板中清除所有以前的内容,并将其替换为提供的ClipboardContent映射中指定的任何内容。
        参数
        content - 放在剪贴板上的内容。 如果为空,则剪贴板将被清除,不会添加新内容。
        结果
        如果成功则为true,如果内容无法添加,则为false。
        异常
        NullPointerException - 如果为任何格式传递空数据引用
      • getContent

        public final Object getContent​(DataFormat dataFormat)
        返回给定类型的此剪贴板中存储的内容,如果没有此类型的内容,则返回null。
        参数
        dataFormat - 格式类型
        结果
        与此类型相关联的内容,如果没有,则为null
      • hasContent

        public final boolean hasContent​(DataFormat dataFormat)
        测试给定DataFormat类型的此剪贴板上是否有任何内容。
        参数
        dataFormat - 格式类型
        结果
        如果此剪贴板上有内容,则为true
      • hasString

        public final boolean hasString​()
        获取是否在此剪贴板上注册了纯文本String(DataFormat.PLAIN_TEXT)。
        结果
        如果 hasContent(DataFormat.PLAIN_TEXT)返回true,则返回true,否则返回false
      • getString

        public final String getString​()
        从以前注册的剪贴板中获取纯文本字符串。 这相当于调用getContent(DataFormat.PLAIN_TEXT) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.PLAIN_TEXT相关联的剪贴板上的字符串,如果没有,则为null。
      • hasUrl

        public final boolean hasUrl​()
        获取是否在此剪贴板上注册了一个url String(DataFormat.URL)。
        结果
        如果hasContent(DataFormat.URL)返回true,则返回true,否则返回false
      • getUrl

        public final String getUrl​()
        从先前已注册的剪贴板获取URL字符串。 这相当于调用getContent(DataFormat.URL) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.URL相关联的剪贴板上的字符串,如果没有,则为null。
      • hasHtml

        public final boolean hasHtml​()
        获取HTML文本String(DataFormat.HTML)是否已在此剪贴板上注册。
        结果
        如果 hasContent(DataFormat.HTML)返回true,则返回true,否则返回false
      • getHtml

        public final String getHtml​()
        从以前注册的剪贴板获取HTML文本字符串。 这相当于调用getContent(DataFormat.HTML) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.HTML相关联的剪贴板上的字符串,如果没有,则为null。
      • hasRtf

        public final boolean hasRtf​()
        获取RTF字符串(DataFormat.RTF)是否已在此剪贴板上注册。
        结果
        如果hasContent(DataFormat.RTF)返回true,则返回true,否则返回false
      • getRtf

        public final String getRtf​()
        从以前注册的剪贴板获取RTF文本字符串。 这相当于调用getContent(DataFormat.RTF) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.RTF关联的剪贴板上的字符串,如果没有,则为null。
      • hasImage

        public final boolean hasImage​()
        获取图像(DataFormat.IMAGE)是否已在此剪贴板上注册。
        结果
        如果hasContent(DataFormat.IMAGE)返回true,则返回true,否则返回false
      • getImage

        public final Image getImage​()
        从先前已注册的剪贴板获取图像。 这相当于调用getContent(DataFormat.IMAGE) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.IMAGE相关联的剪贴板上的图像,如果没有,则为null。
      • hasFiles

        public final boolean hasFiles​()
        获取文件列表(DataFormat.FILES)是否已在此剪贴板上注册。
        结果
        如果hasContent(DataFormat.FILES)返回true,则返回true,否则返回false
      • getFiles

        public final List<File> getFiles​()
        从先前已注册的剪贴板获取文件列表。 这相当于调用getContent(DataFormat.FILES) 如果不存在这样的条目,则返回null。
        结果
        与DataFormat.FILES关联的剪贴板上的文件列表,如果没有,则为null。