JAVAFX 对象放入剪贴板后,再取出来消失的问题

fxml对应的controller里有一全局变量:

public List<Node> selNodes=new ArrayList<>();

放入剪贴板操作:

ClipboardContent cc = new ClipboardContent();
cc.put(DataFormat.RTF, selNodes);
System.out.println("putAddress:"+selNodes.toString());
Clipboard.getSystemClipboard().setContent(cc);

从剪贴板取出操作

Object content = Clipboard.getSystemClipboard().getContent(DataFormat.RTF);
System.out.println("getAddress:"+content.toString());
System.out.println("selNodesAddress:"+selNodes.toString());

发现取出的content(也就是刚刚放进去的selNodes)不为空,类型也是ArrayList类型,但是size==0,里面的内容消失了!
输出如下:

putAddress:[Rectangle[x=345.75, y=120.0, width=150.0, height=150.0, fill=0xff000000, stroke=0xb3b3b3ff, strokeWidth=3.0]]
getAddress:[]
selNodesAddress:[]

并且这个问题的出现没有规律,有时候能正常取出,有时候消失!

怀疑是java虚拟机的垃圾回收器把selNodes的内容给回收了。要想selNodes不被回收,可以考虑把selNodes变为静态变量,加上static后,这个问题暂时没再出现过。

public static List<Node> selNodes=new ArrayList<>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原来英雄是孤独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值