JavaFX拖放带有预览的vbox元素

时间:2019-11-18 07:24:03

标签: java javafx javafx-8 javafx-2

我正在尝试创建具有个自定义javafx组件的应用程序,这些组件可以拖放。当其中一个组件被拖动并悬停在新位置上时,我想在其新位置下方显示一个剪影(矩形),并相应地移动其他组件以预览容器的新外观。我的拖放功能代码如下:

VBox

当在新元素上拖动时,在//Code for the custom javafx component setOnDragDetected(e -> { startFullDrag(); Dragboard db = startDragAndDrop(TransferMode.ANY); ImageView preview = new ImageView(snapshot(null, null)); ClipboardContent content = new ClipboardContent(); content.putImage(preview.getImage()); db.setContent(content); db.setDragView(preview.getImage()); e.consume(); }); setOnDragOver(e -> { Dragboard db = e.getDragboard(); if ((e.getGestureSource() != this) && (!db.hasString()) { System.out.println("Hi"); e.acceptTransferModes(TransferMode.MOVE); Rectangle rectangle = new Rectangle(); VBox root = (VBox) getParent(); rectangle.setOnDragExited(e2 -> { root.getChildren().remove(rectangle); db.clear(); e.consume(); }); rectangle.setWidth(getWidth() + 1.0); rectangle.setHeight(getHeight() + 1.0); int index = root.getChildren().indexOf(this); root.getChildren().add(index, rectangle); ClipboardContent content = new ClipboardContent(); content.putString("hover over"); db.setContent(content); } e.consume(); }); setOnDragExited(e -> { e.consume(); }); 上添加矩形,并在拖动离开新矩形时将其删除。但这不起作用,因为退出矩形时未清除剪贴板内容,因此悬停效果停止工作。有没有达到这种效果的常规方法?

0 个答案:

没有答案