我正在尝试让我的剪贴板通过拖放方式接收一些自定义数据。自定义数据是另一种Java类型。这种其他类型确实实现了可序列化,因此我真的不确定为什么这不起作用。任何想法表示赞赏!
imgView.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
ClipboardContent content = new ClipboardContent();
content.put(dataFormat, RHSIconizedToken.this);
Dragboard db = imgView.startDragAndDrop(TransferMode.ANY);
db.setContent(content);
event.consume();
}
});
要稍后检索此对象,请使用:
RHSIconizedToken replacementRHSiToken = (RHSIconizedToken) db.getContent(RHSIconizedToken.getDataFormat());
我收到以下错误,但是RHSIconizedToken确实实现了Serializable
java.lang.IllegalArgumentException:无法序列化数据
GetDataFormat返回第一个代码示例的put参数中使用的DataFormat对象。
最佳答案
那是因为您的对象不可序列化。
确实,不是因为它实现了Serializable
就可以序列化。
深入研究异常,您可能会发现类似这样的东西
Caused by: java.io.NotSerializableException: javafx.beans.property.SimpleObjectProperty
也许将一些字段设为
transient
会有所帮助。