JavaFX 8:自定义对象的

时间:2017-12-10 21:27:08

标签: javafx javafx-8

我有ObjectProperty实例保留的自定义对象,该实例应绑定到StringProperty的{​​{1}}。

如果我做了明显的事情并使用javafx.scene.text.Text对象属性被绑定,text.textProperty().bind(..);实际显示内容(我相信Text的结果)。

但我确实需要修改toString中实际显示的String

在哪里可以修改实际提供给绑定的值?

== 编辑 ==

在第一个修改之后,我创建了这个简单的测试应用程序:

text

两个输出都是&#39; foo&#39;而我期望第二个是&#39; bar&#39;。毕竟可能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 } } 不是我想要的东西吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找Bindings.createStringBinding()

final ObjectProperty<CustomObject> objProperty;
text.textProperty.bind(Bindings.createStringBinding(() -> {
    final CustomObject value = objProperty.getValue();
    return value != null ? value.toString().toUpperCase() : "";
}, objProperty));