2009-06-26 11 views
2

JavaFXのチュートリアルやサンプルを見てみると、バインディングは常にvaribale宣言時に作られています:javafxでのデータバインディングは、変数宣言中にのみ可能ですか?

def y = bind x; 

または

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

しかし、私はexisitingオブジェクトを持っている場合、私は、何をしますか - ので、ドン」それを宣言し、その属性の1つをバインドする必要があります。私の場合は、FXDLoaderでSVGPathをロードし、SVGPath.visibleを変数にバインドしたいと考えています。どうすればこれを達成できますか?

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 

答えて

2

代わりにトリガーを使用することができます。

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

また行うことができるかもしれない:

def data = bind sc.visible with inverse; 

これはあなたに2つの変数の間の双方向の更新を与えるだろう。 language specificationによれば、他の場所では「バインド」は使用できません。

+0

ありがとう!それは動作します!しかし、それにもかかわらず、私は縛られた質問に心をこめています。 –

+0

別の解決策と言語仕様の関連セクションへのリンクを含めるように答えを更新しました。 –

+0

2番目のソリューションに感謝します。そのことを知らなかった。私はjavafx.comの言語スペックも知っていませんでした;) –

0

はい、変数を宣言しているときにのみバインドできます。

関連する問題