2009-06-26 6 views
2

En regardant les tutoriels JavaFX et des échantillons, les liaisons sont toujours faites au cours des déclarations de varibale:La liaison de données dans javafx est-elle possible uniquement lors de la déclaration de variables?

def y = bind x; 

ou

def address = Address { 
    street: bind myStreet; 
}; 

Mais que dois-je faire, si j'ai un objet exisiting - et donc n » t déclarez - et souhaitez lier un de ses attributs. Dans mon cas, je charge un SVGPath avec le FXDLoader, puis je veux lier SVGPath.visible à une variable. Comment puis-je atteindre cet objectif?

var data = true; 
var fxdContent = FXDLoader.load("{__DIR__}plan.fxz"); 
var sc = fxdContent.lookup("SC0013") as SVGPath; 
sc.visible = bind data; //That doesn't work 

Répondre

2

Vous pouvez utiliser un trigger de remplacement à la place.

var fxdContent = FXDLoader.load("{__DIR__}plan.fxz"); 
var sc = fxdContent.lookup("SC0013") as SVGPath; 
var data = true on replace { 
    sc.visible = data; 
} 

Vous pourriez également être en mesure de le faire:

def data = bind sc.visible with inverse; 

Cela vous donne des mises à jour bidirectionnelle entre les deux variables. Selon le language specification, vous ne pouvez pas utiliser "bind" ailleurs.

+0

merci! ça marche! Mais néanmoins je suis interessé dans la question de liaison. –

+0

J'ai mis à jour la réponse pour inclure une autre solution possible et un lien vers la section pertinente dans la spécification du langage. –

+0

merci pour la deuxième solution. Je ne le savais pas. et je ne connaissais pas les spécifications de la langue non plus, seulement les trucs sur javafx.com;) –

0

Oui, vous ne pouvez lier une variable que lorsque vous la déclarez.

Questions connexes