- java.lang.Object
-
- java.util.EventObject
-
- javafx.event.Event
-
- javafx.scene.input.InputEvent
-
- javafx.scene.input.DragEvent
-
- すべての実装されたインタフェース:
Serializable
,Cloneable
public final class DragEvent extends InputEvent
ドラッグ・アンド・ドロップ・ジェスチャ時にマウス・イベントを置換するドラッグ・イベント。 押下、ドラッグ、解放のジェスチャとドラッグ・アンド・ドロップ・ジェスチャとの違いについては、MouseEvent
で説明します。ドラッグ・アンド・ドロップ・ジェスチャは、
DRAG_DETECTED
イベント・ハンドラ内で(ノードまたはシーンに対して)startDragAndDrop()
を呼び出すことで開始できます。 ドロップ・ターゲットに転送されるデータは、現時点ではdragBoard
に配置されます。ドラッグの入出イベントは、マウスの入出イベントと同じように動作します。
MouseEvent
の概要を参照してください。ドラッグ・ソース: ドラッグ・アンド・ドロップ・ジェスチャの開始
ドラッグ・ジェスチャが検出されたときに、アプリケーションはドラッグ・アンド・ドロップ・ジェスチャを開始するか、押下、ドラッグ、解放のジェスチャを続行するかを決定できます。デフォルトのドラッグ検出メカニズムでは、ボタンが押された状態のマウスの動作とヒステリシスとを組み合せて使用しています。 この動作は、アプリケーションによって強化できます。
MOUSE_PRESSED
およびMOUSE_DRAGGED
の各イベントに、ドラッグ・ジェスチャが検出されたかどうかを決定するdragDetect
フラグがあります。 このフラグのデフォルト値は、デフォルトの検出メカニズムによって異なり、イベント・ハンドラ内でsetDragDetect()
を呼び出すことによって変更できます。dragDetect
フラグがtrueに設定された状態でこれらのいずれかのイベントの処理が終了すると、DRAG_DETECTED
MouseEvent
がジェスチャ・ソース候補(マウス・ボタンが押下されたオブジェクト)に送信されます。 このイベントは、ジェスチャ検出について通知します。DRAG_DETECTED
イベント・ハンドラ内で、ノードまたはシーンに対してstartDragAndDrop()
メソッドが呼び出され、返されたDragboard
でドラッグ対象のデータが利用できるようになると、startDragAndDrop()
が呼び出されたオブジェクトがジェスチャ・ソースとみなされ、ドラッグ・アンド・ドロップ・ジェスチャが開始されます。Dragboard
にはシステム・クリップボード機能がありますが、特にドラッグ・アンド・ドロップによるデータ転送用に使用されます。startDragAndDrop()
メソッドには、ジェスチャ・ソースでサポートされている一連のTransferMode
を渡します。 たとえば、TransferMode.COPY
のみを渡した場合、ジェスチャ・ソースではデータのコピーのみが許可され、移動や参照は許可されません。次に、簡単なドラッグ・アンド・ドロップ・ソースの例を示します。
Rectangle rect = new Rectangle(100, 100); rect.setOnDragDetected(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { Dragboard db = startDragAndDrop(TransferMode.ANY); ClipboardContent content = new ClipboardContent(); content.putString("Hello!"); db.setContent(content); event.consume(); } });
ドロップ・ターゲット候補
ドラッグ・アンド・ドロップ・ジェスチャが開始された後、マウスがドラッグされるオブジェクト(
Node
、Scene
)がドロップ・ターゲット候補となります。マウスがドロップ・ターゲット候補の境界にドラッグされると、ターゲット候補が
DRAG_ENTERED
イベントを受け取ります。 マウスは、ターゲット候補の境界の外側にドラッグされると、DRAG_EXITED
イベントを受け取ります。 バブリングDRAG_ENTERED_TARGET
バリアントおよびDRAG_EXITED_TARGET
バリアントもあります。 これらは、マウス入出イベントと同じように動作します。MouseEvent
の概要を参照してください。ドロップ・ターゲット候補は、その外観を変えることにより、ドラッグ対象のデータをドロップできることをユーザーに知らせることができます。 これは、マウスの位置に基づいて
DRAG_OVER
イベント・ハンドラで行うことができます。 別のオプションとして、DRAG_ENTERED
ハンドラおよびDRAG_EXITED
ハンドラでターゲット候補の外観を変更する方法もあります。DRAG_OVER
イベント・ハンドラでは、ドロップ・ターゲット候補は実際のターゲットであることを知らせることができます。 これを行うは、イベントに対してacceptTransferModes(TransferMode...)
を呼び出し、受入れ可能な転送モードを渡します。 これがイベント配信時に呼び出されない場合や、渡した転送モードのいずれもジェスチャ・ソースでサポートされていない場合は、ドロップ・ターゲット候補は実際のドロップ・ターゲットとはみなされません。acceptTransferModes(TransferMode...)
を呼び出してイベントを受け入れるかどうかを判断するときは、Dragboard
で使用可能なデータのタイプを考慮する必要があります。Dragboard
へのアクセスは、getDragboard()
メソッドによって提供されます。イベントを受け入れるとき、ジェスチャ・ターゲット候補はその操作にどの
TransferMode
が受け入れられるかを判断します。 その判断を行うために、DragBoard.getTransferModes()
(ジェスチャ・ソースでサポートされている転送モードのセット)およびDragEvent.getTransferMode()
(プラットフォームによって発行され、キー修飾子によって駆動されるデフォルトの転送モード)を使用できます。 複数の転送モードをacceptTransferModes(TransferMode...)
メソッドに渡すことができます。 この場合、このメソッドがアプリケーションにかわって判断を下します(デフォルトのモードがジェスチャ・ソースでサポートされ、ジェスチャ・ターゲットで受け入れられる場合はそのデフォルトのモードを選択します。それ以外の場合は、サポートされ、受け入れられるモードのうち最も一般的なモードを選択します)。DRAG_DROPPED
イベントのgetTransferMode()
は後で、DRAG_OVER
イベント・ハンドラによって受け入れられる転送モードを報告します。ドラッグ・アンド・ドロップ・ジェスチャは、マウス・ボタンを放すと終了します。 以前の
DRAG_OVER
イベントを受け入れたジェスチャ・ターゲットに対してこれが発生し、転送モードがジェスチャ・ソースでサポートされている場合、DRAG_DROPPED
イベントがジェスチャ・ターゲットに送信されます。 そのハンドラで、ジェスチャ・ターゲットはドラッグボードのデータにアクセスできます。 データが転送された後(または転送しないことが決定された後)、イベントに対してsetDropCompleted(Boolean)
を呼び出してジェスチャを完了する必要があります。Boolean
引数は、データが正常に転送されたかどうかを示します。 これが呼び出されない場合、ジェスチャは失敗とみなされます。次に、テキスト・データの簡単なドラッグ・アンド・ドロップ・ターゲットの例を示します。
Rectangle rect = new Rectangle(100, 100); rect.setOnDragOver(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); if (db.hasString()) { event.acceptTransferModes(TransferMode.COPY_OR_MOVE); } event.consume(); } }); rect.setOnDragDropped(new EventHandler<DragEvent>() { @Override public void handle(DragEvent event) { Dragboard db = event.getDragboard(); boolean success = false; if (db.hasString()) { System.out.println("Dropped: " + db.getString()); success = true; } event.setDropCompleted(success); event.consume(); } });
ドラッグ・ソース: ドラッグ・アンド・ドロップ・ジェスチャのファイナライズ
ジェスチャが終了した後、データ転送の成功/失敗や取消に関係なく、
DRAG_DONE
イベントがジェスチャ・ソースに送信されます。 イベントのgetTransferMode()
メソッドは、ジェスチャ・ソースに対し、データの転送がどのように完了したかを示します。 転送モードに値MOVE
がある場合には、ソースがそのデータをクリアできます。 ソースのデータをクリアすると、ドラッグ・アンド・ドロップ・ジェスチャによってデータが移動された適切な外観がユーザーに表示されます。 値がnull
の場合、ドラッグ・アンド・ドロップ・ジェスチャはデータが転送されることなく終了します。 これは、ドロップ・ターゲットでないノードでマウス解放イベントが発生したり、ユーザーが[Esc]キーを押してドラッグ・アンド・ドロップ・ジェスチャを取り消したり、ジェスチャ・ターゲットがデータ転送の失敗を報告したことが原因で発生する場合があります。- 導入されたバージョン:
- JavaFX 2.0
- 関連項目:
- 直列化された形式
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static EventType<DragEvent>
ANY
すべてのドラッグ・イベント・タイプに共通のスーパータイプ。static EventType<DragEvent>
DRAG_DONE
このイベントは、データがドロップ・ターゲットにドロップされた後に、ドラッグ・アンド・ドロップ・ジェスチャのソースで発生します。static EventType<DragEvent>
DRAG_DROPPED
このイベントは、ドラッグ・アンド・ドロップ・ジェスチャの実行時にドロップ・ターゲットでマウス・ボタンが放されたときに発生します。static EventType<DragEvent>
DRAG_ENTERED
このイベントは、ドラッグ・ジェスチャがノードに入ったときに発生します。static EventType<DragEvent>
DRAG_ENTERED_TARGET
このイベントは、ドラッグ・ジェスチャがノードに入ったときに発生します。static EventType<DragEvent>
DRAG_EXITED
このイベントは、ドラッグ・ジェスチャがノードから出たときに発生します。static EventType<DragEvent>
DRAG_EXITED_TARGET
このイベントは、ドラッグ・ジェスチャがノードから出たときに発生します。static EventType<DragEvent>
DRAG_OVER
このイベントは、ドラッグ・ジェスチャが該当ノード内で進行中のときに発生します。-
クラス javafx.event.Eventで宣言されたフィールド
consumed、eventType、NULL_SOURCE_TARGET、target
-
クラス java.util.EventObjectで宣言されたフィールド
source
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 DragEvent(Object source, EventTarget target, EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
新しいDragEventイベントを構築します。DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
空のソースおよびターゲットを使用した新しいDragEventイベントを構築します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 void
acceptTransferModes(TransferMode... transferModes)
このDragEvent
を受け入れて、ドロップ操作の転送モードを選択します。DragEvent
copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。DragEvent
copyFor(Object source, EventTarget target, EventType<DragEvent> type)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。TransferMode
getAcceptedTransferMode()
ターゲット候補に受け入れられる転送モードを取得します。Object
getAcceptingObject()
ドラッグを受け入れたオブジェクト。Dragboard
getDragboard()
データの転送に使用できるドラッグボード。Object
getGestureSource()
ドラッグ・アンド・ドロップ・ジェスチャのソース・オブジェクト。Object
getGestureTarget()
ドラッグ・アンド・ドロップ・ジェスチャのターゲット・オブジェクト。PickResult
getPickResult()
選択内容に関する情報を返します。double
getSceneX()
DragEventのソースが含まれているScene
の原点に対して相対的なイベントの水平位置を返します。double
getSceneY()
DragEventのソースが含まれているScene
の原点に対して相対的なイベントの垂直位置を返します。double
getScreenX()
イベントの水平方向の絶対位置を返します。double
getScreenY()
イベントの垂直方向の絶対位置を返します。TransferMode
getTransferMode()
データ転送モード。double
getX()
DragEventのソースの原点に対して相対的なイベントの水平位置。double
getY()
DragEventのソースの原点に対して相対的なイベントの垂直位置。double
getZ()
MouseEventのソースの原点に対して相対的なイベントの深度位置。boolean
isAccepted()
このイベントが受け入れられたかどうかを示します。boolean
isDropCompleted()
setDropCompleted(true)
がこのイベントに対して呼び出されたかどうか。void
setDropCompleted(boolean isTransferDone)
DRAG_DROPPED
イベント・ハンドラでこのDragEvent
の転送処理が正常に完了したことを示します。-
クラス javafx.event.Eventで宣言されたメソッド
clone、consume、copyFor、fireEvent、getEventType、getTarget、isConsumed
-
クラス java.util.EventObjectで宣言されたメソッド
getSource, toString
-
-
-
-
フィールドの詳細
-
DRAG_ENTERED_TARGET
public static final EventType<DragEvent> DRAG_ENTERED_TARGET
このイベントは、ドラッグ・ジェスチャがノードに入ったときに発生します。 これはバブリング・バリアントで、入ったノードのすべての親にも配信されます(消費済である場合を除きます)。 ノードのいずれかの子に入ったことを通知する必要がない場合は、DRAG_ENTERED
イベント・ハンドラを使用する必要があります。
-
DRAG_ENTERED
public static final EventType<DragEvent> DRAG_ENTERED
このイベントは、ドラッグ・ジェスチャがノードに入ったときに発生します。 このイベント・タイプは、入ったノードにのみ配信されます。親がそのノードをフィルタ処理したり、バブリング・イベントを受け取る必要がある場合、その親はDRAG_ENTERED_TARGET
を使用する必要があります。
-
DRAG_EXITED_TARGET
public static final EventType<DragEvent> DRAG_EXITED_TARGET
このイベントは、ドラッグ・ジェスチャがノードから出たときに発生します。 これはバブリング・バリアントで、出たノードのすべての親にも配信されます(消費済である場合を除きます)。 ノードのいずれかの子から出たことを通知する必要がない場合は、DRAG_EXITED
イベント・ハンドラを使用する必要があります。
-
DRAG_EXITED
public static final EventType<DragEvent> DRAG_EXITED
このイベントは、ドラッグ・ジェスチャがノードから出たときに発生します。 このイベント・タイプは、出たノードにのみ配信されます。親がそのノードをフィルタ処理したり、バブリング・イベントを受け取る必要がある場合、その親はDRAG_EXITED_TARGET
を使用する必要があります。
-
DRAG_OVER
public static final EventType<DragEvent> DRAG_OVER
このイベントは、ドラッグ・ジェスチャが該当ノード内で進行中のときに発生します。
-
DRAG_DONE
public static final EventType<DragEvent> DRAG_DONE
このイベントは、データがドロップ・ターゲットにドロップされた後に、ドラッグ・アンド・ドロップ・ジェスチャのソースで発生します。 イベントのtransferMode
は、ドロップ・ターゲットで何が起きたかを示します。transferMode
の値がMOVE
である場合には、ソースがそのデータをクリアできます。 ソースのデータをクリアすると、ドラッグ・アンド・ドロップ・ジェスチャによってデータが移動された適切な外観がユーザーに表示されます。 値がNONE
のtransferMode
は、ドラッグ・アンド・ドロップ・ジェスチャでデータが転送されなかったことを示しています。
-
-
コンストラクタの詳細
-
DragEvent
public DragEvent(Object source, EventTarget target, EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
新しいDragEventイベントを構築します。 DRAG_DROPPEDイベント・タイプおよびDRAG_DONEイベント・タイプの場合、渡したtransferMode
に従ってaccepted
状態およびacceptedTransferMode
が設定されます。- パラメータ:
source
- イベントのソース。 nullに設定できます。target
- イベントのターゲット。 nullに設定できます。eventType
- イベントのタイプ。dragboard
- イベントのドラッグボード。x
- シーンに関連するx。y
- シーンに関連するy。screenX
- 画面に対して相対的なx座標。screenY
- 画面に対して相対的なy座標。transferMode
- イベントの転送モード。gestureSource
- イベントのドラッグ・アンド・ドロップ・ジェスチャのソース。gestureTarget
- イベントのドラッグ・アンド・ドロップ・ジェスチャのターゲット。pickResult
- 選択結果。 nullに設定でき、その場合は、シーン座標とターゲットに基づいて、追加の値のない2D選択結果が構築されます。- 導入されたバージョン:
- JavaFX 8.0
-
DragEvent
public DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
空のソースおよびターゲットを使用した新しいDragEventイベントを構築します。- パラメータ:
eventType
- イベントのタイプ。dragboard
- イベントのドラッグボード。x
- シーンに関連するx。y
- シーンに関連するy。screenX
- 画面に対して相対的なx座標。screenY
- 画面に対して相対的なy座標。transferMode
- イベントの転送モード。gestureSource
- イベントのドラッグ・アンド・ドロップ・ジェスチャのソース。gestureTarget
- イベントのドラッグ・アンド・ドロップ・ジェスチャのターゲット。pickResult
- 選択結果。 nullに設定でき、その場合は、シーン座標に基づいて、追加の値のない2D選択結果が構築されます。- 導入されたバージョン:
- JavaFX 8.0
-
-
メソッドの詳細
-
copyFor
public DragEvent copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。- パラメータ:
source
- コピーされたイベントの新しいソースtarget
- コピーされたイベントの新しいターゲットgestureSource
- 新しいジェスチャ・ソース。gestureTarget
- 新しいジェスチャ・ターゲット。eventType
- 新しいイベント・タイプ- 戻り値:
- フィールドがあるイベント・コピー
- 導入されたバージョン:
- JavaFX 8.0
-
copyFor
public DragEvent copyFor(Object source, EventTarget target, EventType<DragEvent> type)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。- パラメータ:
source
- コピーされたイベントのソースtarget
- コピーされたイベントのターゲットtype
- イベントのタイプ- 戻り値:
- フィールドがあるイベント・コピー
- 導入されたバージョン:
- JavaFX 8.0
-
getX
public final double getX()
DragEventのソースの原点に対して相対的なイベントの水平位置。- 戻り値:
- DragEventのソースの原点に対して相対的なイベントの水平位置
-
getY
public final double getY()
DragEventのソースの原点に対して相対的なイベントの垂直位置。- 戻り値:
- DragEventのソースの原点に対して相対的なイベントの垂直位置
-
getZ
public final double getZ()
MouseEventのソースの原点に対して相対的なイベントの深度位置。- 戻り値:
- MouseEventのソースの原点に対して相対的なイベントの深度位置
- 導入されたバージョン:
- JavaFX 8.0
-
getScreenX
public final double getScreenX()
イベントの水平方向の絶対位置を返します。- 戻り値:
- イベントの水平方向の絶対位置
-
getScreenY
public final double getScreenY()
イベントの垂直方向の絶対位置を返します。- 戻り値:
- イベントの垂直方向の絶対位置
-
getSceneX
public final double getSceneX()
DragEventのソースが含まれているScene
の原点に対して相対的なイベントの水平位置を返します。 ノードがScene
内にない場合、値はDragEventのノードの最上位のルート親のboundsInParentに対して相対的な値になります。 3Dシーンでは、これは投影変換の適用後にフラットな座標を表します。- 戻り値:
- DragEventのソースが含まれている
Scene
の原点に対して相対的なイベントの水平位置。
-
getSceneY
public final double getSceneY()
DragEventのソースが含まれているScene
の原点に対して相対的なイベントの垂直位置を返します。 ノードがScene
内にない場合、値はDragEventのノードの最上位のルート親のboundsInParentに対して相対的な値になります。 3Dシーンでは、これは投影変換の適用後にフラットな座標を表します。- 戻り値:
- DragEventのソースが含まれている
Scene
の原点に対して相対的なイベントの垂直位置。
-
getPickResult
public final PickResult getPickResult()
選択内容に関する情報を返します。- 戻り値:
- 選択内容に関する情報を含む新しいPickResultオブジェクト
- 導入されたバージョン:
- JavaFX 8.0
-
getGestureSource
public final Object getGestureSource()
ドラッグ・アンド・ドロップ・ジェスチャのソース・オブジェクト。 ジェスチャ・ソースは、ドラッグ・アンド・ドロップ操作を開始したオブジェクトです。 値null
は、ジェスチャが他のアプリケーションから発生した場合に有効です。- 戻り値:
- ドラッグ&ドロップ・ジェスチャのソース・オブジェクト
-
getGestureTarget
public final Object getGestureTarget()
ドラッグ・アンド・ドロップ・ジェスチャのターゲット・オブジェクト。 ジェスチャ・ターゲットは、ドラッグ・イベントを受け入れるオブジェクトです。 値null
は、転送が行われずにドラッグ・アンド・ドロップ・ジェスチャが取り消されたか完了した場合、またはドラッグ・イベントを受け入れるイベント・ターゲットが現時点で存在しない場合に有効です。- 戻り値:
- ドラッグ&ドロップ・ジェスチャのターゲット・オブジェクト
-
getTransferMode
public final TransferMode getTransferMode()
データ転送モード。 データ転送が実行される前は、これが入力イベント(ユーザーが修飾子を保持するなど)に従ってシステムによって設定されるデフォルトの転送モードです。 データ転送(DRAG_DROPPEDイベント)時は、これにより、以前のDRAG_OVERハンドラで受け入れられた転送モードが判別されます。 データ転送後(DRAG_DONEイベント)は、これにより、実際に行われた転送モードが判別されます。- 戻り値:
- データ転送モード
-
isAccepted
public final boolean isAccepted()
このイベントが受け入れられたかどうかを示します。- デフォルト値:
- false
- 戻り値:
- このイベントは受け入れられていますか?
- 関連項目:
acceptTransferModes(javafx.scene.input.TransferMode...)
-
getAcceptedTransferMode
public final TransferMode getAcceptedTransferMode()
ターゲット候補に受け入れられる転送モードを取得します。- 戻り値:
- ターゲット候補に受け入れられた転送モード
-
getAcceptingObject
public final Object getAcceptingObject()
ドラッグを受け入れたオブジェクト。- 戻り値:
- ドラッグを受け入れたオブジェクト
- 導入されたバージョン:
- JavaFX 8.0
-
getDragboard
public final Dragboard getDragboard()
データの転送に使用できるドラッグボード。DRAG_DETECTED
マウス・イベントのハンドラでデータをこのドラッグボードに配置できます。DRAG_DROPPED
イベントのハンドラでこのドラッグボードからデータをコピーできます。- 戻り値:
- データを転送するためのドラッグ・ボード
-
acceptTransferModes
public void acceptTransferModes(TransferMode... transferModes)
このDragEvent
を受け入れて、ドロップ操作の転送モードを選択します。 このイベントを受信するドロップ・ターゲット候補がDRAG_OVER
イベント・ハンドラからのドロップ・ターゲットであることを示すために使用されます。このメソッドに渡され、かつジェスチャ・ソースでサポートされている転送モードのいずれかを受け入れます。 可能な場合にはデフォルトの転送モードを受け入れ、それ以外の場合は受入れ可能なモードのうち最も一般的なものを受け入れます。
- パラメータ:
transferModes
- ドロップ操作の転送モード。
-
setDropCompleted
public void setDropCompleted(boolean isTransferDone)
DRAG_DROPPED
イベント・ハンドラでこのDragEvent
の転送処理が正常に完了したことを示します。 この呼出し後にdragboard
アクセスが発生することはありません。- パラメータ:
isTransferDone
-true
は、転送が正常に完了したことを示します。- 例外:
IllegalStateException
- これがDRAG_DROPPEDイベントではない場合
-
isDropCompleted
public boolean isDropCompleted()
setDropCompleted(true)
がこのイベントに対して呼び出されたかどうか。- 戻り値:
setDropCompleted(true)
が呼び出された場合はtrue
-
-