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