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, 2014, Oracle and/or its affiliates. All rights reserved.