2009-09-06 8 views
1

Pour autant que je sache, la duplication de noeuds dans JavaFX doit être effectuée avec la fonction Duplicator.duplicate.Duplication de noeuds personnalisés dans JavaFX

Il fonctionne très bien lors de la duplication des nœuds dont les types sont inclus dans la bibliothèque JavaFX, par exemple

def dup = Duplicator.duplicate(Rectangle{x:30 y:30 width:100 height:100}); 
dup.translateX = 10; 
insert dup into content; 

insérerait un rectangle noir sur la scène.

Cependant, si je définis une nouvelle classe de la façon suivante:

class MyRect extends Rectangle {} 

Ou

class MyRect extends CustomNode { 
    override function create() {Rectangle{x:30 y:30 width:10 height:10}} 
} 

Il me donne l'erreur d'exécution suivant

Type 'javafxapplication1.NumberGrid$MyRect' not found. 

Où bien sûr javafxapplication1.NumberGrid sont le paquet et le fichier de la classe MyRect est.

Ce type à Sun's forums avait le même problème, mais je ne vois aucune réponse là-dedans.

Ou peut-être que je fais cela dans le mauvais sens, et il y a une meilleure approche pour dupliquer des nœuds personnalisés?

mise à jour: Essayer de reproduire Group travaillé, mais en essayant de reproduire Stack donne la même erreur.

Selon la documentation, il est censé soutenir tous les types pris en charge dans FXD y compris Node, mais peut-être il ne supporte que certains des descendants de Node?

+0

Pas de réponse, mais http: //forums.sun .com/thread.jspa? forumID = 932 & threadID = 5406575 est lié, au moins pour la remarque Stack. – PhiLho

Répondre

0

Je sais que c'est une vieille question, mais avez-vous essayé ce qui suit?

public class MyRect extends CustomNode, Cloneable { 

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

Ce qui fonctionne pour moi via

var newRect = rect.clone(); 

qui n'est pas une copie complète (mais dans mon cas, je n'ai pas besoin de ce)