我可以将TextField
的文字属性绑定到DoubleProperty
,如下所示:
textField.textProperty().bindBidirectional(someDoubleProperty, new NumberStringConverter());
但是,如果我的someDoubleProperty
是[{1}}而不是ReadOnlyDoubleProperty
的实例呢?
我对双向绑定毫不感兴趣。我只使用这种方法,因为没有
这样的东西DoubleProperty
我是否需要使用侦听器,或者是否也有“绑定解决方案”?
是否有像
这样的东西textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());
在那里?
答案 0 :(得分:2)
对于单向绑定,您可以执行以下操作:
textField.textProperty().bind(Bindings.createStringBinding(
() -> Double.toString(someDoubleProperty.get()),
someDoubleProperty));
第一个参数是一个生成所需字符串的函数。如果您愿意,可以使用您选择的格式化程序。
第二个(以及任何后续)参数是要绑定的属性;即如果这些属性中的任何一个发生变化,绑定将失效(即需要重新计算)。
等效地,你可以做到
textField.textProperty().bind(new StringBinding() {
{
bind(someDoubleProperty);
}
@Override
protected String computeValue() {
return Double.toString(someDoubleProperty.get());
}
});
答案 1 :(得分:0)
还有一种简单的单向绑定形式:
textField.textProperty().bind(someDoubleProperty.asString());