public class TransferHandler extends Object implements Serializable
Transferable
の転送処理に使用します。Transferable
は、カット、コピー、ペーストなどを通じてクリップボードに送るデータまたはクリップボードから受け取るデータを表すために使用します。また、ドラッグ&ドロップ操作で、コンポーネントからのドラッグおよびコンポーネントへのドロップを表すために使用します。Swing には、このクラスの実装により提供される機能を使用するカット、コピー、ペーストのキーボードバインディングを自動的にサポートする機能が用意されています。また、ドラッグ&ドロップについても同様に自動的にサポートされます。Swing の開発者は、主に Swing コンポーネントで transferHandler
プロパティーを設定することにより、転送のセマンティクスを指定する作業に集中できます。
このクラスは、コンストラクタのプロパティー名を指定するだけで、デフォルトの動作として、コンポーネントのプロパティーを転送するよう実装されます。たとえば、クリップボードやドラッグ&ドロップ操作によりコンポーネント間でフォアグラウンドカラーを転送するには、文字列「foreground」を使用して TransferHandler
を構築します。組み込みサポートは、getForeground
によって返されたカラーを転送元として使用し、setForeground
を転送先に使用します。
詳細は、『The Java Tutorial』の「How to Use Drag and Drop and Data Transfer」を参照してください。
修飾子と型 | クラスと説明 |
---|---|
static class |
TransferHandler.DropLocation
ドロップされたデータを挿入する位置を表します。
|
static class |
TransferHandler.TransferSupport
このクラスには、クリップボードによる転送またはドラッグ&ドロップによる転送に関連する詳細情報をすべてカプセル化する機能と、ドラッグ&ドロップ操作をカスタマイズする機能があります。
|
修飾子と型 | フィールドと説明 |
---|---|
static int |
COPY
「copy」の転送アクションを表す
int です。 |
static int |
COPY_OR_MOVE
「copy」または「move」のソースアクション機能を表す
int です。 |
static int |
LINK
「link」の転送アクションを表す
int です。 |
static int |
MOVE
「move」の転送アクションを表す
int です。 |
static int |
NONE
転送アクションがないことを表す
int です。 |
修飾子 | コンストラクタと説明 |
---|---|
protected |
TransferHandler()
サブクラスに便利なコンストラクタです。
|
|
TransferHandler(String property)
クリップボードまたはドラッグ&ドロップ操作によってコンポーネント間の Java Bean プロパティーを転送できる転送ハンドラを構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
boolean |
canImport(JComponent comp, DataFlavor[] transferFlavors)
コンポーネントが実際に一連のデータフレーバのインポートを試みる前に、データフレーバのインポートを受け入れるかどうかを示します。
|
boolean |
canImport(TransferHandler.TransferSupport support)
このメソッドは、開発者が転送のプロパティーの設定や、転送が可能かどうかの判断をできるようにするため、ドラッグ&ドロップ操作中に繰り返し呼び出されます。戻り値が
true の場合は、現在、指定の TransferSupport (転送の詳細情報すべてが格納されている) によって表される転送が可能です。戻り値が false の場合は、転送が拒否されます。 |
protected Transferable |
createTransferable(JComponent c)
データ転送のソースとして使用する
Transferable を作成します。 |
void |
exportAsDrag(JComponent comp, InputEvent e, int action)
Swing ドラッグサポートを開始します。
|
protected void |
exportDone(JComponent source, Transferable data, int action)
データのエクスポート後に呼び出されます。
|
void |
exportToClipboard(JComponent comp, Clipboard clip, int action)
指定されたコンポーネントを指定されたクリップボードへ転送します。
|
static Action |
getCopyAction()
クリップボードへのコピー操作を実行する
Action を返します。 |
static Action |
getCutAction()
クリップボードへの切り取り操作を実行する
Action を返します。 |
Image |
getDragImage()
ドラッグイメージを返します。
|
Point |
getDragImageOffset()
ドラッグするイメージのアンカーオフセットを返します。
|
static Action |
getPasteAction()
クリップボードからの貼り付け操作を実行する
Action を返します。 |
int |
getSourceActions(JComponent c)
ソースでサポートされている転送アクションの種類を返します。返される値は、
COPY 、MOVE 、および LINK のビット単位の論理和です。 |
Icon |
getVisualRepresentation(Transferable t)
転送の外観を設定するオブジェクトを返します。
|
boolean |
importData(JComponent comp, Transferable t)
クリップボードまたは DND ドロップ操作からコンポーネントへ転送します。
|
boolean |
importData(TransferHandler.TransferSupport support)
クリップボードまたはドラッグ&ドロップ操作から転送します。
|
void |
setDragImage(Image img)
ドラッグイメージパラメータを設定します。
|
void |
setDragImageOffset(Point p)
ドラッグするイメージのアンカーオフセットを設定します。
|
public static final int NONE
int
です。public static final int COPY
int
です。データがクリップボードにコピーされたとき、またはドラッグ&ドロップ操作で別の場所へコピーされたときに使用されます。public static final int MOVE
int
です。データがクリップボードに移動 (カット) されたとき、またはドラッグ&ドロップ操作で別の場所へ移動されたときに使用されます。public static final int COPY_OR_MOVE
int
です。public static final int LINK
int
です。この値を使って、ドラッグ&ドロップ操作でデータがリンクされるように指定できます。DnDConstants.ACTION_LINK
, 定数フィールド値public TransferHandler(String property)
property
- 転送するプロパティーの名前。転送ハンドラに関連付けられているプロパティーがない場合は null
も可 (たとえばその他の種類の転送を実行するサブクラス)protected TransferHandler()
public static Action getCutAction()
Action
を返します。実行すると、このアクションは、コンポーネントの TransferHandler
上で MOVE
アクションを指定して exportToClipboard
を呼び出すことにより、ActionEvent
の JComponent
ソースを操作します。Action
public static Action getCopyAction()
Action
を返します。実行すると、このアクションは、コンポーネントの TransferHandler
上で COPY
アクションを指定して exportToClipboard
を呼び出すことにより、ActionEvent
の JComponent
ソースを操作します。Action
public static Action getPasteAction()
Action
を返します。実行すると、このアクションは、コンポーネントの TransferHandler
上でクリップボードコンテンツを指定して importData
を呼び出すことにより、ActionEvent
の JComponent
ソースに影響を及ぼします。Action
public void setDragImage(Image img)
img
- ドラッグするイメージpublic Image getDragImage()
null
です。public void setDragImageOffset(Point p)
null
であってはならない。p
- イメージの左上隅を基準にしたイメージのアンカーオフセットの座標に対応する Point
オブジェクトpublic Point getDragImageOffset()
Point
オブジェクト。デフォルトではポイント (0,0)
が返されます。public void exportAsDrag(JComponent comp, InputEvent e, int action)
javax.swing.plaf.basic
パッケージのさまざまな UI の実装から、このメソッドが呼び出されます。UI のカスタム実装から呼び出して、Swing ドラッグサポートを使用できます。また、JComponent
のサブクラスとして記述される Swing の拡張から呼び出して、Swing ドラッグサポートの機能を利用できます。
このメソッドの呼び出しが戻る時点で転送が完了している必要はありません。つまり、このメソッドの呼び出しによって、ドロップの待機が妨げられることはありません。転送は、java.awt.dnd
メカニズムの Swing の実装を使用して実行され、開発者がそれ以上処理を追加する必要はありません。転送が完了すると、exportDone
メソッドが呼び出されます。
comp
- 転送されるデータを保持するコンポーネント。TransferHandler
の共有を可能にするために提供されるe
- 転送をトリガーしたイベントaction
- 最初に要求された転送アクション。COPY
、MOVE
、または LINK
。DnD システムは、ドラッグ操作中に使用されるアクションを変更することができるpublic void exportToClipboard(JComponent comp, Clipboard clip, int action) throws IllegalStateException
転送は、java.awt.datatransfer
メカニズムを使用して実行され、開発者がそれ以上処理を追加する必要はありません。データ転送がすべて完了すると、このメソッドが復帰する前に、発生したアクションで exportDone
メソッドが呼び出されます。データをクリップボードに貼り付けようとしたときにクリップボードが使用できない場合は、Clipboard.setContents(Transferable, ClipboardOwner)
によってスローされた IllegalStateException
がこのメソッドを介して伝播されます。ただし、一貫性を保つために exportDone
はまず NONE
というアクションで呼び出されます。
comp
- 転送されるデータを保持するコンポーネント。TransferHandler
の共有を可能にするために提供されるclip
- データの転送先のクリップボードaction
- 要求された転送アクション。値は COPY
または MOVE
。実行される操作は、getSourceActions による転送機能と要求されたアクションによる転送機能の共通部分。要求されたアクションがサポートされていない場合、アクションは NONE
IllegalStateException
- クリップボードが現在使用できない場合Clipboard.setContents(Transferable, ClipboardOwner)
public boolean importData(TransferHandler.TransferSupport support)
Transferable
と転送されるコンポーネントは TransferSupport
に格納されています。
ドラッグ&ドロップ実装は、このメソッドを呼び出す前に、転送が適切かどうか判断するために canImport
を呼び出しますが、ペースト実装はこの処理を行いません。このため、このメソッドの呼び出し時に、ペーストのため転送を行うことができると想定することはできません。この場合に対応するため、canImport
を明示的に呼び出すことをお勧めします。
注: このメソッドに渡される TransferSupport
オブジェクトは、メソッドが呼び出されている間だけ有効です。このメソッドの終了後に格納される値は未定義です。
support
- 転送の詳細を格納するオブジェクト。null
以外。NullPointerException
- support
が null
である場合canImport(TransferHandler.TransferSupport)
public boolean importData(JComponent comp, Transferable t)
Transferable
は、コンポーネントにインポートされるデータを表します。
注: Swing は、TransferSupport
を実行する新しいバージョンの importData
を呼び出し、次にそれがこのメソッドを呼び出します (TransferSupport
内のコンポーネントが JComponent
である場合)。新しいバージョンは、より多くの情報を提供します。また、JFrame
やその他の JComponent
以外のコンポーネントに TransferHandler
を直接設定して使用することができる唯一のバージョンでもあります。このため、開発者には、新しいバージョンを呼び出し、オーバーライドすることを奨励します。
comp
- 転送を受け取るコンポーネント。TransferHandler
の共有を可能にするために提供されるt
- インポートするデータimportData(TransferHandler.TransferSupport)
public boolean canImport(TransferHandler.TransferSupport support)
true
の場合は、現在、指定の TransferSupport
(転送の詳細情報すべてが格納されている) によって表される転送が可能です。戻り値が false
の場合は、転送が拒否されます。
ドラッグ&ドロップ中にドロップ位置を自動的に表示するコンポーネントの場合、転送を受け入れると、デフォルトでドロップ位置が示されます。これを変更するには、TransferSupport
上で setShowDropLocation
を呼び出します。
デフォルトでは、転送が受け入れられる場合、ユーザーがドラッグジェスチャーによって選択したドロップアクションが選択されます。開発者は、これをオーバーライドして、サポートされているソースアクションから別のアクションを選択できます。このためには、TransferSupport
上で setDropAction
を呼び出します。
canImport
を呼び出すたびに、TransferSupport
に格納された状態が更新されます。このため、ここで設定されたすべてのプロパティーは、呼び出しのたびに設定する必要があります。ドロップ時には、importData
の呼び出しの前に canImport
が 1 回だけ呼び出されます。この最後の呼び出し中に TransferSupport
上で設定されたすべての状態は、importData
に格納されます。
このメソッドが、ペースト操作の応答として内部で呼び出されることはありません。このため、importData
の実装はこのメソッドを明示的に呼び出し、このメソッドがペースト操作の適性も返すように準備することが推奨されています。
注: このメソッドに渡される TransferSupport
オブジェクトは、メソッドが呼び出されている間だけ有効です。このメソッドの終了後に格納される値は未定義です。
support
- 転送の詳細を格納するオブジェクト。null
以外。true
、そうでない場合は false
NullPointerException
- support
が null
である場合importData(TransferHandler.TransferSupport)
, TransferHandler.TransferSupport.setShowDropLocation(boolean)
, TransferHandler.TransferSupport.setDropAction(int)
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors)
注: Swing は、TransferSupport
を実行する新しいバージョンの canImport
を呼び出し、次にそれがこのメソッドを呼び出します (TransferSupport
内のコンポーネントが JComponent
の場合のみ)。新しいバージョンは、より多くの情報を提供します。また、JFrame
やその他の JComponent
以外のコンポーネントに TransferHandler
を直接設定して使用することができる唯一のバージョンでもあります。このため、開発者には、新しいバージョンを呼び出し、オーバーライドすることを奨励します。
comp
- 転送を受け取るコンポーネント。TransferHandler
の共有を可能にするために提供されるtransferFlavors
- 有効なデータ形式canImport(TransferHandler.TransferSupport)
public int getSourceActions(JComponent c)
COPY
、MOVE
、および LINK
のビット単位の論理和です。
可変ではないモデルも存在します。このようなモデルでは MOVE
の転送アクションは通知されません。NONE
を返すことにより、コンポーネントからの転送を無効化します。
c
- 転送されるデータを保持するコンポーネント。TransferHandler
の共有を可能にするために提供されるCOPY
、そうでない場合は NONE
を返すpublic Icon getVisualRepresentation(Transferable t)
Icon
インタフェースの実装は、グラフィッククリップまたはアルファレベルを変更するべきではありません。アイコンの実装は矩形である必要はなく、境界の矩形をすべてペイントする必要もありません。また、アイコンのペイントメソッドを呼び出すロジックでは、すべてのビットがペイントされていることを想定してはいけません。このメソッドの戻り値としては null
も許され、ビジュアル表現が設定されていないことを示します。その場合、呼び出しロジックでは Transferable を自由に表すことができます。
null
が返された場合、デフォルトの Swing ロジックではアルファ合成されたドラッグアニメーションは実行されません。
t
- 転送されるデータ。createTransferable
メソッドによって作成されたものと想定されるnull
protected Transferable createTransferable(JComponent c)
Transferable
を作成します。転送するデータの表現を返します。コンポーネントのプロパティーが null
の場合は null
を返しますc
- 転送されるデータを保持するコンポーネント。TransferHandler
の共有を可能にするために提供されるc
に関連付けられたプロパティーが null
の場合は null
protected void exportDone(JComponent source, Transferable data, int action)
MOVE
の場合に転送されたデータを削除します。
MOVE
はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions
には MOVE
が含まれません。
source
- データのソースであったコンポーネントdata
- 転送されたデータ。アクションが NONE
である場合は null。action
- 実際に実行されたアクション バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.