据我了解,JavaFX中的节点重复应该使用Duplicator.duplicate
函数完成。
在复制JavaFX库中包含类型的节点时,它可以正常工作,例如
def dup = Duplicator.duplicate(Rectangle{x:30 y:30 width:100 height:100});
dup.translateX = 10;
insert dup into content;
会在场景中插入黑色矩形。
但是,如果我按以下方式定义新类:
class MyRect extends Rectangle {}
或者
class MyRect extends CustomNode {
override function create() {Rectangle{x:30 y:30 width:10 height:10}}
}
它给我以下运行时错误
Type 'javafxapplication1.NumberGrid$MyRect' not found.
当然javafxapplication1.NumberGrid
类是MyRect
类所在的包和文件。
Sun's forums的这个人有同样的问题,但我没有看到任何答案。
或者我可能做错了,并且有更好的方法来复制自定义节点?
更新:尝试复制Group
有效,但尝试复制Stack
会产生同样的错误。
根据文档,它应该支持FXD
支持的所有类型,包括Node
,但它可能只支持Node
个后代中的一些?
答案 0 :(得分:0)
我知道这是一个老问题,但您是否尝试了以下内容?
public class MyRect extends CustomNode, Cloneable {
override public function clone(): MyRect {
super.clone() as MyRect;
}
...
}
通过
对我有用var newRect = rect.clone();
这不是一个很深的副本(但在我的情况下,我不需要这个)