1

据我了解,在 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论坛上的这个人也有同样的问题,但我在那里没有看到任何答案。

或者也许我做错了,并且有更好的方法来复制自定义节点?

更新:尝试复制Group工作,但尝试复制会Stack产生相同的错误。

根据文档,它应该支持 include 支持的所有类型FXDNode但也许它只支持Node's 的一些后代?

4

1 回答 1

0

我知道这是一个老问题,但是您尝试过以下方法吗?

public class MyRect extends CustomNode, Cloneable {

    override public function clone(): MyRect {
        super.clone() as MyRect;
    }
    ...    
}

哪个对我有用

var newRect = rect.clone();

这不是深拷贝(但在我的情况下,我不需要这个)

于 2010-04-16T21:41:15.783 回答