我可以将 aTextField的 text 属性绑定到 a DoubleProperty,如下所示:
textField.textProperty().bindBidirectional(someDoubleProperty, new NumberStringConverter());
Run Code Online (Sandbox Code Playgroud)
但是如果 mysomeDoubleProperty是一个ReadOnlyDoubleProperty而不是的实例DoubleProperty呢?
我实际上对双向绑定不感兴趣。我使用这种方法只是因为没有这样的事情
textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());
Run Code Online (Sandbox Code Playgroud)
我是否需要使用侦听器,或者是否也有“绑定解决方案”?
有没有像
textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());
Run Code Online (Sandbox Code Playgroud)
在那里?
对于单向绑定,您可以执行以下操作:
textField.textProperty().bind(Bindings.createStringBinding(
() -> Double.toString(someDoubleProperty.get()),
someDoubleProperty));
Run Code Online (Sandbox Code Playgroud)
第一个参数是一个生成你想要的字符串的函数。如果需要,您可以在那里使用您选择的格式化程序。
第二个(以及任何后续)参数是要绑定的属性;即,如果这些属性中的任何一个发生更改,则绑定将失效(即需要重新计算)。
同样,你可以做
textField.textProperty().bind(new StringBinding() {
{
bind(someDoubleProperty);
}
@Override
protected String computeValue() {
return Double.toString(someDoubleProperty.get());
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |