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
ドラッグ・アンド・ドロップ・ジェスチャが開始された後、マウスがドラッグされるオブジェクト(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
ジェスチャが終了した後、データ転送の成功/失敗や取消に関係なく、DRAG_DONE
イベントがジェスチャ・ソースに送信されます。イベントのgetTransferMode()
メソッドは、ジェスチャ・ソースに対し、データの転送がどのように完了したかを示します。転送モードに値MOVE
がある場合には、ソースがそのデータをクリアできます。ソースのデータをクリアすると、ドラッグ・アンド・ドロップ・ジェスチャによってデータが移動された適切な外観がユーザーに表示されます。値がnull
の場合、ドラッグ・アンド・ドロップ・ジェスチャはデータが転送されることなく終了します。これは、ドロップ・ターゲットでないノードでマウス解放イベントが発生したり、ユーザーが[Esc]キーを押してドラッグ・アンド・ドロップ・ジェスチャを取り消したり、ジェスチャ・ターゲットがデータ転送の失敗を報告したことが原因で発生する場合があります。
修飾子と型 | フィールドと説明 |
---|---|
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
このイベントは、ドラッグ・ジェスチャが該当ノード内で進行中のときに発生します。
|
consumed、eventType、NULL_SOURCE_TARGET、target
source
コンストラクタと説明 |
---|
DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
空のソースおよびターゲットを使用した新しいDragEventイベントを構築します。
|
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イベントを構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
acceptTransferModes(TransferMode... transferModes)
この
DragEvent を受け入れて、ドロップ操作の転送モードを選択します。 |
DragEvent |
copyFor(Object newSource, EventTarget newTarget)
指定したイベント・ソースとターゲットを持つこのイベントのコピーを作成して返します。
|
DragEvent |
copyFor(Object source, EventTarget target, EventType<DragEvent> type)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。
|
DragEvent |
copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
特定のドラッグ・イベントのコピーを作成し、特定のフィールドを置き換えます。
|
TransferMode |
getAcceptedTransferMode()
ターゲット候補に受け入れられる転送モードを取得します。
|
Object |
getAcceptingObject()
ドラッグを受け入れたオブジェクト。
|
Dragboard |
getDragboard()
データの転送に使用できるドラッグボード。
|
EventType<DragEvent> |
getEventType()
このイベントのイベント・タイプを取得します。
|
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 の転送処理が正常に完了したことを示します。 |
getSource、toString
public static final EventType<DragEvent> DRAG_ENTERED_TARGET
DRAG_ENTERED
イベント・ハンドラを使用する必要があります。public static final EventType<DragEvent> DRAG_ENTERED
DRAG_ENTERED_TARGET
を使用する必要があります。public static final EventType<DragEvent> DRAG_EXITED_TARGET
DRAG_EXITED
イベント・ハンドラを使用する必要があります。public static final EventType<DragEvent> DRAG_EXITED
DRAG_EXITED_TARGET
を使用する必要があります。public static final EventType<DragEvent> DRAG_OVER
public static final EventType<DragEvent> DRAG_DONE
transferMode
は、ドロップ・ターゲットで何が起きたかを示します。transferMode
の値がMOVE
である場合には、ソースがそのデータをクリアできます。ソースのデータをクリアすると、ドラッグ・アンド・ドロップ・ジェスチャによってデータが移動された適切な外観がユーザーに表示されます。値がNONE
のtransferMode
は、ドラッグ・アンド・ドロップ・ジェスチャでデータが転送されなかったことを示しています。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)
transferMode
に従ってaccepted
状態およびacceptedTransferMode
が設定されます。source
- イベントのソース。nullに設定できます。target
- イベントのターゲット。nullに設定できます。eventType
- イベントのタイプ。dragboard
- イベントのドラッグボード。x
- シーンに関連するx。y
- シーンに関連するy。screenX
- 画面に対して相対的なx座標。screenY
- 画面に対して相対的なy座標。transferMode
- イベントの転送モード。gestureSource
- イベントのドラッグ・アンド・ドロップ・ジェスチャのソース。gestureTarget
- イベントのドラッグ・アンド・ドロップ・ジェスチャのターゲット。pickResult
- 選択結果。nullに設定でき、その場合は、シーン座標とターゲットに基づいて、追加の値のない2D選択結果が構築されます。public DragEvent(EventType<DragEvent> eventType, Dragboard dragboard, double x, double y, double screenX, double screenY, TransferMode transferMode, Object gestureSource, Object gestureTarget, PickResult pickResult)
eventType
- イベントのタイプ。dragboard
- イベントのドラッグボード。x
- シーンに関連するx。y
- シーンに関連するy。screenX
- 画面に対して相対的なx座標。screenY
- 画面に対して相対的なy座標。transferMode
- イベントの転送モード。gestureSource
- イベントのドラッグ・アンド・ドロップ・ジェスチャのソース。gestureTarget
- イベントのドラッグ・アンド・ドロップ・ジェスチャのターゲット。pickResult
- 選択結果。nullに設定でき、その場合は、シーン座標に基づいて、追加の値のない2D選択結果が構築されます。public DragEvent copyFor(Object source, EventTarget target, Object gestureSource, Object gestureTarget, EventType<DragEvent> eventType)
source
- コピーされたイベントの新しいソースtarget
- コピーされたイベントの新しいターゲットgestureSource
- 新しいジェスチャ・ソース。gestureTarget
- 新しいジェスチャ・ターゲット。eventType
- 新しいイベント・タイプpublic DragEvent copyFor(Object newSource, EventTarget newTarget)
Event
null
に設定されている場合は、NULL_SOURCE_TARGET
値によって置換されます。public DragEvent copyFor(Object source, EventTarget target, EventType<DragEvent> type)
source
- コピーされたイベントの新しいソースtarget
- コピーされたイベントの新しいターゲットeventType
- 新しいイベント・タイプpublic EventType<DragEvent> getEventType()
Event
Event
クラスの複数のオブジェクトは、異なるイベント・タイプを持つことができます。これらのイベント・タイプでは、発生するイベントの種類をさらに指定します。getEventType
、クラス: InputEvent
public final double getX()
public final double getY()
public final double getZ()
public final double getScreenX()
public final double getScreenY()
public final double getSceneX()
Scene
の原点に対して相対的なイベントの水平位置を返します。ノードがScene
内にない場合、値はDragEventのノードの最上位のルート親のboundsInParentに対して相対的な値になります。3Dシーンでは、これは投影変換の適用後にフラットな座標を表します。Scene
の原点に対して相対的なイベントの水平位置。public final double getSceneY()
Scene
の原点に対して相対的なイベントの垂直位置を返します。ノードがScene
内にない場合、値はDragEventのノードの最上位のルート親のboundsInParentに対して相対的な値になります。3Dシーンでは、これは投影変換の適用後にフラットな座標を表します。Scene
の原点に対して相対的なイベントの垂直位置。public final PickResult getPickResult()
public final Object getGestureSource()
null
は、ジェスチャが他のアプリケーションから発生した場合に有効です。public final Object getGestureTarget()
null
は、転送が行われずにドラッグ・アンド・ドロップ・ジェスチャが取り消されたか完了した場合、またはドラッグ・イベントを受け入れるイベント・ターゲットが現時点で存在しない場合に有効です。public final TransferMode getTransferMode()
public final boolean isAccepted()
acceptTransferModes(javafx.scene.input.TransferMode...)
public final TransferMode getAcceptedTransferMode()
public final Object getAcceptingObject()
public final Dragboard getDragboard()
DRAG_DETECTED
マウス・イベントのハンドラでデータをこのドラッグボードに配置できます。DRAG_DROPPED
イベントのハンドラでこのドラッグボードからデータをコピーできます。public void acceptTransferModes(TransferMode... transferModes)
DragEvent
を受け入れて、ドロップ操作の転送モードを選択します。このイベントを受信するドロップ・ターゲット候補がDRAG_OVER
イベント・ハンドラからのドロップ・ターゲットであることを示すために使用されます。
このメソッドに渡され、かつジェスチャ・ソースでサポートされている転送モードのいずれかを受け入れます。可能な場合にはデフォルトの転送モードを受け入れ、それ以外の場合は受入れ可能なモードのうち最も一般的なものを受け入れます。
public void setDropCompleted(boolean isTransferDone)
isTransferDone
- true
は、転送が正常に完了したことを示します。IllegalStateException
- これがDRAG_DROPPEDイベントではない場合public boolean isDropCompleted()
setDropCompleted(true)
がこのイベントに対して呼び出されたかどうか。setDropCompleted(true)
が呼び出された場合はtrueCopyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.