Java テキストをクリップボードにコピー

Mohd Mohtashim Nawaz 2023年10月12日
  1. Java で Toolkit および Clipboard クラスを使用してクリップボードのインスタンスを作成する
  2. Java の StringSelection クラスを使用して文字列をクリップボードにコピーする
  3. JavaFX アプリケーションでテキストをクリップボードにコピーする
Java テキストをクリップボードにコピー

この記事では、Java アプリケーションからクリップボードへのテキストのコピーについて説明します。

Java は、Java アプリケーションでテキストを表示するいくつかの要素を提供します。他のコンピュータアプリケーションにエクスポートするには、テキストをクリップボードに複数回コピーする必要があります。

Java で Toolkit および Clipboard クラスを使用してクリップボードのインスタンスを作成する

Java は、Java で GUI ベースの機能を実装するためのさまざまなメソッドを含む Toolkit という名前のスーパークラスを提供します。

このクラスには、Toolkit クラスのデフォルトインスタンスを返す getDefaultToolkit() という名前の静的メソッドがあります。メソッドの定義を以下に示します。

public static Toolkit getDefaultToolkit()

Toolkit のデフォルトインスタンスを取得したら、それを使用してメソッド getSystemClipboard() をさらに呼び出すことができます。この抽象メソッドは、システムクリップボードのシングルトンインスタンスを返します。

getSystemClipboard() メソッドの定義を以下に示します。

public abstract Clipboard getSystemClipboard()
                                      throws HeadlessException

このメソッドは、アプリケーションのヘッドレスフラグを表す HeadlessException という名前の例外をスローします。

クリップボードインスタンスを取得すると、テキストをクリップボードにコピーする準備が整います。

Java の StringSelection クラスを使用して文字列をクリップボードにコピーする

クリップボードのインスタンスを取得したら、次のタスクは、文字列をクリップボードにコピーできるようにすることです。これは、StringSelection クラスを使用して行うことができます。

StringSelection クラスは、単純なテキスト形式で文字列を転送する機能を実装します。このクラスは、java.awt.datatransfer クラスのサブクラスです。

StringSelection クラスのインスタンスを作成するには、コピーする文字列をクラスコンストラクターに渡す必要があります。

最後に、インスタンスの準備ができたら、文字列をシステムクリップボードにコピーするクリップボードの setContent() メソッドを呼び出すことができます。setContent() メソッドは 2つの引数を受け入れます。

  • 最初の引数は転送可能なインスタンスであり、この場合は StringSelection クラスインスタンスです。
  • 2 番目の引数は、クリップボードの所有者を示します。

コードを見てみましょう。

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