Nodeの複製

JavaFXで同一のNodeを複数のコンテンツとして設定しようとすると期待通りに動作しません。

var circle = Circle { 
    centerX: 50, centerY: 50
    radius: 50.0
    fill: Color.AQUA
}
Stage {
    title: "Duplicator Sample"
    width: 500
    height: 500
    scene: Scene {
        content: [
            Group { content: [circle] }
            Group { content: [circle], translateX: 10 } // 半ずらしで表示
        ]
    }
}

このような場合は、Nodeの複製を作る事のできるjavafx.fxd.Duplicatorを使えば解決します。

        content: [
            Group { content: [circle] }
            Group { content: [Duplicator.duplicate(circle)], translateX: 10 } // 半ずらしで表示(複製)
        ]

尚、当然のことですが複製されたオブジェクトは複製なので、元のNodeが変更されても変更は反映されません。