Java 将文本复制到剪贴板

Mohd Mohtashim Nawaz 2023年10月12日
  1. 使用 Java 中的 ToolkitClipboard 类创建剪贴板实例
  2. 使用 Java 中的 StringSelection 类将字符串复制到剪贴板
  3. 在 JavaFX 应用程序中将文本复制到剪贴板
Java 将文本复制到剪贴板

本文讨论将文本从 Java 应用程序复制到剪贴板。

Java 提供了几个元素来显示 Java 应用程序中的文本。多次,必须将文本复制到剪贴板才能导出到其他计算机应用程序。

使用 Java 中的 ToolkitClipboard 类创建剪贴板实例

Java 提供了一个名为 Toolkit 的超类,其中包含多种方法来实现 Java 中基于 GUI 的功能。

该类有一个名为 getDefaultToolkit() 的静态方法,它返回 Toolkit 类的默认实例。该方法的定义如下。

public static Toolkit getDefaultToolkit()

一旦获得 Toolkit 的默认实例,你可以使用它进一步调用方法 getSystemClipboard()。此抽象方法返回系统剪贴板的单例实例。

getSystemClipboard() 方法的定义如下。

public abstract Clipboard getSystemClipboard()
                                      throws HeadlessException

该方法会抛出一个名为 HeadlessException 的异常,该异常表示应用程序中的无头标志。

获得剪贴板实例后,你就可以将文本复制到剪贴板了。

使用 Java 中的 StringSelection 类将字符串复制到剪贴板

获得剪贴板的实例后,下一个任务是准备将字符串复制到剪贴板。你可以通过使用 StringSelection 类来做到这一点。

StringSelection 类实现了以简单文本格式传输字符串的功能。该类是 java.awt.datatransfer 类的子类。

要创建 StringSelection 类的实例,你必须将要复制的字符串传递给类构造函数。

最后,当实例准备好时,你可以调用剪贴板的 setContent() 方法,将你的字符串复制到系统剪贴板。setContent() 方法接受两个参数。

  • 第一个参数是一个可转移的实例,在我们的例子中,它是 StringSelection 类实例。
  • 第二个参数表示剪贴板的所有者。

让我们看看代码。

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;

public class CopyToClipBoard {
  public static void main(String[] args) {
    String str = "To be copied";
    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection strSel = new StringSelection(str);

    cb.setContents(strSel, null);
  }
}

在 JavaFX 应用程序中将文本复制到剪贴板

JavaFX 应用程序与 AWT 和 Swing 应用程序略有不同。在使用 JavaFX 应用程序时,你可以使用类似的功能并稍作更改来显示 HTML 内容。

你可以将内容设置为 ClipboardContent 实例,而不是将内容直接放入剪贴板。将内容推送到实例后,你可以直接将该实例添加到剪贴板。

同样,在阅读内容时,你可以使用标记 DataFormat.HTML 区分普通文本和 HTML 内容。

让我们看一下代码中的示例。

public class CopyToClipBoard {
  Clipboard cb = Clipboard.getSystemClipboard();

  ClipboardContent ct = new ClipboardContent();

  ct.putString("Text to be copied");
  ct.putHtml("<b>HTML Text</b>");

  cb.setContent(ct);

  if (cb.hasContent(DataFormat.HTML)) {
    System.out.println(cb.getHtml());
  }
  if (cb.hasString()) {
    System.out.println(cb.getString());
  }
}

这就是将内容从 Java 应用程序复制到系统剪贴板的全部内容。

相关文章 - Java JavaFX