public class Clipboard extends Object
一般的なシステム・クリップボードにアクセスするには、次のコードを使用します。
Clipboard clipboard = Clipboard.getSystemClipboard();
アプリケーションにおけるシステム・クリップボードのインスタンスは常に1つのみであるため、必要に応じてそのインスタンスへの参照を隠すという選択は、完全に許容されます。
クリップボードは、任意の1つの時点で、概念的に単一のアイテムがクリップボード上にあるという概念に基づいて動作しますが、アイテムは様々なフォーマットでクリップボードに配置される可能性があります。たとえば、ユーザーがHTMLエディタでテキストを選択し、[Ctrl]を押しながら[C]を押すか、または[Cmd]を押しながら[C]を押して、コピーする場合があります。この場合は、同じテキストをHTMLとプレーン・テキストの両方でクリップボードから利用できる可能性があります。クリップボードにはデータの2つのコピーがありますが、両方が同じデータを表します。
コンテンツは、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
クラスは、クリップボードに追加される一般的なデータ型を処理するための、コンビニエンス・メソッドを使用した単なるマップです。
クリップボード上には同じデータの複数の表現が存在する可能性があり、かつ、異なるコンテンツ・タイプを処理する機能がアプリケーションごとに異なるため、外部アプリケーションで容易に使用できるように、クリップボード上には、現実的な範囲でできるかぎり多くのデータ表現を配置することが重要です。オペレーティング・システムの便利な機能によって、複数のタイプが追加される場合があります。たとえば、Macでは、RTFタイプを指定したときにプレーン・テキスト文字列が設定される場合があります。このことがどのように、どのような状況で発生するかは、この仕様の範囲外であるため、OSのドキュメントを参照してください。
クリップボードからデータを読み取るときは、まず、サポートされるうちで最もリッチなタイプを探すことが重要です。たとえば、イメージとメディア・フォーマットの埋込みをサポートしているテキスト・ドキュメントがある場合は、クリップボードからコンテンツを貼り付けるときに、まずコンテンツをメディアまたはイメージとして表現できるかどうかをチェックする必要があります。表現できない場合は、RTF、HTML、または該当するドキュメント・タイプでサポートされている、なんらかのリッチ・テキスト形式をチェックします。そうでない場合は、単に文字列を取ることができます。
または、たとえばプレーン・テキストのドキュメントがある場合は、単に文字列表現を取得して、それを使用します(利用可能な場合)。クリップボードがhasHtmlか、hasStringかをチェックできます。
if (clipboard.hasString()) { ... }
共通または組込みのタイプに加えて、任意のデータ(シリアライズ可能であることを想定)をクリップボードに入れることができます。
コンテンツ・タイプは、DataFormatオブジェクトによって定義されます。DataFormatクラスにより、不変のオブジェクトが定義され、共通のDataFormatタイプには多数のstatic finalフィールドがあります。また、アプリケーション固有のDataFormatタイプを宣言して使用することもできます。次の2つのメソッドは同等です(2つ目の呼出しは1つ目よりも優先されます)。
ClipboardContent content = new ClipboardContent();
content.putString("some text");
content.put(DataFormat.PLAIN_TEXT, "other text");
独自のウィンドウ・システムを持たない埋込みプラットフォームでは、Clipboard.getSystemClipboard()から返されるクリップボードにJavaFXアプリケーション外からアクセスできない場合があります。この場合、1つのJavaFXアプリケーションの異なる部分間でのデータ交換には、Clipboard.getSystemClipboard()によって返されるクリップボードを使用できますが、複数のアプリケーション間でのデータ交換には使用できません。
修飾子と型 | メソッドと説明 |
---|---|
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テキスト文字列(DataFormat.HTML)がこのクリップボードで登録されているかどうかを取得します。
|
boolean |
hasImage()
イメージ(DataFormat.IMAGE)がこのクリップボードで登録されているかどうかを取得します。
|
boolean |
hasRtf()
RTF文字列(DataFormat.RTF)がこのクリップボードで登録されているかどうかを取得します。
|
boolean |
hasString()
プレーン・テキスト文字列(DataFormat.PLAIN_TEXT)がこのクリップボードで登録されているかどうかを取得します。
|
boolean |
hasUrl()
url文字列(DataFormat.URL)がこのクリップボードで登録されているかどうかを取得します。
|
boolean |
setContent(Map<DataFormat,Object> content)
クリップボードにコンテンツを入れます。
|
public static Clipboard getSystemClipboard()
public final void clear()
getContentTypes()
を呼び出すと、空のセットが返されます。public final Set<DataFormat> getContentTypes()
public final boolean setContent(Map<DataFormat,Object> content)
content
- クリップボードに入れるコンテンツ。nullの場合、クリップボードは単にクリアされ、新しいコンテンツは追加されません。NullPointerException
- なんらかの形式でnullのデータ参照が渡された場合public final Object getContent(DataFormat dataFormat)
public final boolean hasContent(DataFormat dataFormat)
public final boolean hasString()
hasContent(DataFormat.PLAIN_TEXT)
でtrueが返される場合はtrue、それ以外の場合はfalsepublic final String getString()
getContent(DataFormat.PLAIN_TEXT)
を起動することと同等です。そのようなエントリが存在しない場合は、nullが返されます。public final boolean hasUrl()
public final String getUrl()
getContent(DataFormat.URL)
を起動することと同等です。そのようなエントリが存在しない場合は、nullが返されます。public final boolean hasHtml()
hasContent(DataFormat.HTML)
でtrueが返される場合はtrue、それ以外の場合はfalsepublic final String getHtml()
getContent(DataFormat.HTML)
を起動することと同等です。そのようなエントリが存在しない場合は、nullが返されます。public final boolean hasRtf()
public final String getRtf()
getContent(DataFormat.RTF)
を起動することと同等です。そのようなエントリが存在しない場合は、nullが返されます。public final boolean hasImage()
public final Image getImage()
getContent(DataFormat.IMAGE)
を起動することと同等です。そのようなエントリが存在しない場合は、nullが返されます。public final boolean hasFiles()
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.