我实现了将一个组拖放到一个 Pane 中,在剪贴板中放置一个空字符串。 ,这工作得很好,但我需要拖动时我的对象可见。
我在一些示例中看到使用了 DataFormat 并且该对象应该是可序列化的,我不确定它是否适合我的情况。 我尝试使用此方法,但出现异常。事实上,JavaFX 不支持使用 Java Serialized 接口(interface)对组件进行序列化。
我正在使用:JavaSE1.7、JavaFX2.2
最佳答案
您可以创建您正在拖动的Node
的图像并将其用于dragView:
private EventHandler<? super MouseEvent> onDragDetected() {
return evt -> {
Node node = (Node) evt.getSource();
Dragboard db = node.startDragAndDrop(TransferMode.MOVE);
db.setDragView(createSnapshot(node), evt.getX(), evt.getY());
ClipboardContent content = new ClipboardContent();
content.putString("");
db.setContent(content);
evt.consume();
};
}
private WritableImage createSnapshot(Node node) {
SnapshotParameters snapshotParams = new SnapshotParameters();
WritableImage image = node.snapshot(snapshotParams, null);
return image;
}
关于java - 是否可以在 ClipboardContent javaFx 上存储节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093884/