编辑回答并更新了代码:
我有一个javafx应用程序,我想在同一个窗口中将图像从一个图像视图拖动到另一个图像视图。但我想不出让第二个图像视图接受并显示图像的方法。
Image image = new Image("file:src/drag_and_drop_6/Notes.png");
ImageView iv = new ImageView();
iv.setImage(image);
Image image2 = new Image("file:src/drag_and_drop_6/orca.png");
ImageView iv2 = new ImageView();
iv2.setImage(image2);
iv.setOnDragDetected((MouseEvent event) -> {
Dragboard db = iv.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putImage(iv.getImage());
db.setContent(content);
event.consume();
});
iv.setOnDragOver(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
if (event.getGestureSource() != iv &&
event.getDragboard().hasImage()) {
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
event.consume();
}
});
iv.setOnDragDone(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage()) {
iv2.setImage(db.getImage());
}
event.consume();
}
});
答案 0 :(得分:1)
我自己在Can't manage to do drag and drop in a GridPane发现了这些错误。
ClipboardContent content = new ClipboardContent();
content.putImage(iv.getImage());
// instead of
// content.putString(iv.getId());
和
if (db.hasImage()) {
iv2.setImage(db.getImage());
}
完整的代码在上面。