Java 在TornadoFX中,当其他属性发生更改时,如何更改一个属性?
例如,我想这样做:我有一个StringProperty,它是IntegerProperty和anoter StringProperty的组合,如下所示:Java 在TornadoFX中,当其他属性发生更改时,如何更改一个属性?,java,javafx,properties,kotlin,tornadofx,Java,Javafx,Properties,Kotlin,Tornadofx,例如,我想这样做:我有一个StringProperty,它是IntegerProperty和anoter StringProperty的组合,如下所示: StringProperty A=“foo” 积分属性B=3 结果StringProperty C=“foo 3” 如何“绑定”属性,以便在A或B发生更改时C发生更改?(请注意,我不想对C所做的更改做出反应) 我尝试使用stringBinding()方法,但我不清楚这个方法到底是如何工作的,关于它的文档也不清楚 stringBinding是
- StringProperty A=“foo”
- 积分属性B=3
- 结果StringProperty C=“foo 3”
我尝试使用
stringBinding()
方法,但我不清楚这个方法到底是如何工作的,关于它的文档也不清楚 stringBinding
是您想要的。第一个参数将在计算块内变为this
,如果this
是一个可观察的值,它将作为一个依赖项添加,用于计算何时应该重新计算字符串绑定。其余参数(此处仅为b
)也作为重新评估依赖项添加
如果执行stringBinding(a,b){“${a.value}${b.value}”}
,则创建了一个字符串绑定,该绑定将在a
或b
更改时更新。因为在上面的示例中,this
是a
,所以您也可以在stringBinding(a,b){“${this.value}${b.value}”}
中编写,但我认为这并不能让它更清楚:)
通过以下示例,我们决定将第一个元素设置为this
的原因更加明显:
val sizeDescription=bind(items){“$size列表中的元素”}
在这里,您不需要再次引用
项
来获得它的大小
属性。我认为您需要stringBinding(a,b){“${a.get()}${b.get()}”
或stringBinding(a,b){$(a.value)${b.value}
。JavaFX属性使用默认的toString()
显示的不仅仅是它们的值。