Java テキストをクリップボードにコピー
-
Java で
Toolkit
およびClipboard
クラスを使用してクリップボードのインスタンスを作成する -
Java の
StringSelection
クラスを使用して文字列をクリップボードにコピーする - JavaFX アプリケーションでテキストをクリップボードにコピーする
この記事では、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 アプリケーションからシステムクリップボードにコンテンツをコピーすることについてのすべてです。