我有一个由ObjectProperty
实例持有的自定义对象,该实例应该绑定到StringProperty
a 的javafx.scene.text.Text
。
如果我做显而易见的事情并使用text.textProperty().bind(..);
object 属性得到绑定并Text
实际显示内容(我相信 的结果toString
)。
但我确实需要修改String
实际显示在text
.
我在哪里可以修改实际提供给绑定的值?
==编辑==
按照第一个答案,我创建了这个简单的测试应用程序:
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' 而我预计第二个是 'bar'。所以毕竟可能Bindings.createStringBinding(..)
不是我要找的?
您正在寻找Bindings.createStringBinding()
.
final ObjectProperty<CustomObject> objProperty;
text.textProperty.bind(Bindings.createStringBinding(() -> {
final CustomObject value = objProperty.getValue();
return value != null ? value.toString().toUpperCase() : "";
}, objProperty));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句