- java.lang.Object
-
- javafx.scene.input.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应用程序外部访问。
如果存在安全管理员,应用程序必须具有
FXPermission
“ accessClipboard ”,以便从Clipboard.getSystemClipboard()返回的剪贴板可从JavaFX应用程序外部访问。 为了与以前版本的JDK兼容,等效的AWTPermission
“AWTPermission
”还将允许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
-
-