【发布时间】:2019-08-23 19:41:16
【问题描述】:
大家,
我想在我的应用程序中插入一个可以拖放到应用程序之外的图形。一旦图形被释放到窗口之外,应该打开一个未装饰/透明窗口,其中仅显示此图形。
Stage newStage = new Stage();
StackPane stack = new StackPane();
ImageView imageView = new ImageView(new Image(this.getClass().getResourceAsStream(InBoxEnum.Graphic.INBOXLOGO.getFilename())));
stack.getChildren().add(imageView);
imageView.setOnDragDetected(event -> {
Dragboard dragboard = imageView.startDragAndDrop(TransferMode.MOVE);
dragboard.setDragView(imageView.snapshot(null, null));
ClipboardContent content = new ClipboardContent();
content.put(DRAGGABLE_INBOX_TYPE, "dontcare");
dragboard.setContent(content);
event.consume();
});
imageView.setOnDragDone(event -> {
System.out.println(event.getScreenX());
System.out.println(event.getScreenY());
});
Scene scene = new Scene(stack, 500, 500);
newStage.setScene(scene);
newStage.show();
到目前为止,DragDetected 事件也没有问题。
问题在于,在 dragDone 事件中,鼠标的位置始终为 0,我无法判断鼠标是在我的应用程序内部还是外部。如果在应用程序内释放鼠标,则不会发生任何事情。
我也尝试过使用机器人类,但我总是得到一个静态的奇怪 x/y 位置。
我正在使用 JAVA 11(采用 JDK)。
感谢您的帮助
【问题讨论】:
标签: java javafx drag-and-drop