我可以将TextField的文本属性绑定到DoubleProperty,如下所示:
textField.textProperty().bindBidirectional(someDoubleProperty, new NumberStringConverter());但是如果我的someDoubleProperty是ReadOnlyDoubleProperty而不是DoubleProperty的实例呢?
我实际上对双向绑定不感兴趣。我使用这个方法只是因为没有这样的东西
textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());我是否需要使用监听器,还是也有一个“绑定解决方案”?
有什么像
textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());在外面?
发布于 2018-02-02 17:34:52
对于单向绑定,您可以:
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());
}
});发布于 2018-03-31 13:48:52
还有另一种形式的简单单向绑定:
textField.textProperty().bind(someDoubleProperty.asString());https://stackoverflow.com/questions/48580397
复制相似问题