javafx.scene.text.Text
のStringProperty
にバインドする必要があるObjectProperty
インスタンスでカスタムオブジェクトを保持しています。JavaFX 8:カスタムオブジェクトのプロパティバインディング
私が明白なことをしてtext.textProperty().bind(..);
を使用すると、オブジェクトプロパティがバインドされ、Text
が実際にコンテンツを表示します(私はtoString
の結果と信じています)。
しかし、私は実際にtext
にdisplaydさString
を変更する必要があります。
実際にバインディングに提供される値はどこで変更できますか?私はこの単純なテスト・アプリケーションを作成した最初のanwer後
== EDIT ==
:私は二つ目は、 'バー' であると予想されるのに対し、
import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class BindingsTest {
public static void main(String... args) {
final ObjectProperty<Foo> foo = new SimpleObjectProperty<>();
foo.set(Foo.FOO);
final StringProperty textProperty = new SimpleStringProperty();
textProperty.bind(Bindings.createStringBinding(() -> foo.get().name().toLowerCase()));
System.out.println(textProperty.get());
foo.set(Foo.BAR);
System.out.println(textProperty.get());
}
private enum Foo {
FOO, BAR
}
}
は、両方の出力が 'foo' であります。だからおそらくすべてBindings.createStringBinding(..)
私が探しているものではない?
答えで行われる方法を試してみませんか?私。 'createStringBinding()'の2番目の引数として 'foo'を指定しますか? –
@James_Dああ、私もそれを見たことはない - このラムダのことはまだ私を混乱させる。私は解決策を正しく再現したと思ったので、ここに投稿しました:-) – Hannes
あなたは依存関係として 'foo'を指定しませんでした。 'Bindings.createStringBinding()'は、 'foo'の変更を監視して、いつ無効にするのかを知る必要があります。 – Jai