2009-06-26 3 views
2

Mit Blick auf den javafx Tutorials und Proben werden Bindungen immer während Varibale Erklärungen:Ist die Datenbindung in javafx nur während der Variablendeklaration möglich?

def y = bind x; 

oder

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

Aber was soll ich tun, wenn ich ein vorhandenes Objekt habe - und damit don‘ t deklariere es - und möchte eines seiner Attribute binden. In meinem Fall lade ich einen SVGPath mit dem FXDLoader und möchte dann SVGPath.visible an eine Variable binden. Wie kann ich das erreichen?

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 

Antwort

2

Sie können stattdessen einen Ersatztrigger verwenden, z.

def data = bind sc.visible with inverse; 

Diese Sie zwischen den beiden Variablen bidirektionalen Updates geben würde:

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

könnten Sie auch tun können. Laut der language specification können Sie "bind" nirgendwo anders verwenden.

+0

danke! das funktioniert! Trotzdem bin ich gespannt auf die Bindefrage. –

+0

Ich aktualisierte die Antwort, um eine andere mögliche Lösung und einen Link zu dem relevanten Abschnitt in der Sprachspezifikation aufzunehmen. –

+0

danke für die zweite Lösung. Ich kannte das nicht. und ich kannte auch die Sprachspezifikation nicht, nur die Sachen bei javafx.com;) –

0

Ja, Sie können eine Variable nur binden, wenn Sie sie deklarieren.

Verwandte Themen