ドラッグアンドドロップを実装したいノードがあります(このオブジェクトはターゲットではありません)。私はまた、オブジェクトがマウスカーソルと共に動くようにしたい。私はこれらの両方を行うことができましたが、同時にはできませんでした。ドラッグアンドドロップ操作中にコードを実行する方法は?
setOnDragDetected
とsetOnMouseDragged
はよく機能しません。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class Example extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Rectangle rect = new Rectangle(20, 20);
rect.setOnMousePressed(e -> System.out.println("Pressed"));
rect.setOnMouseDragged(e -> System.out.println("Dragged"));
rect.setOnDragDetected(e -> {
System.out.println("Detected");
ClipboardContent content = new ClipboardContent();
content.putString("something");
Dragboard db = rect.startDragAndDrop(TransferMode.ANY);
db.setContent(content);
});
Group subGroup = new Group(rect);
Scene scene = new Scene(subGroup, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Example.launch(args);
}
}
ノード上でマウスを押して、マウスを移動します。これは出力です:
Pressed
Dragged
Dragged
Dragged
Dragged
Dragged
Dragged
Detected
ドラッグが検出されると、MouseDragged
ハンドラが停止します。
私はどのように記述したのですか?私が気づいたことは、おそらく私は親のためにonDragOver
を使用することができましたが、それは本当にすべきであるので、ノード内の動作を望みます。
この現象はまったくありません。ドラッグジェスチャが検出された後、onMouseDraggedハンドラは報告を続けます。質問を含めるには[MCVE]と[編集]を作成する必要があります。 –
@James_D申し訳ありません。ここにコードがあります。それは私が思うドラッグボードと関係がある。 – Mark