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と同じエラーが発生します。

ドキュメントによると、 をFXD含むでサポートされているすべてのタイプをサポートするはずですが、の子孫のNode一部しかサポートしていないのでしょうか?Node

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 に答える