Java 在TornadoFX中,当其他属性发生更改时,如何更改一个属性?

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,它是IntegerProperty和anoter StringProperty的组合,如下所示:

  • StringProperty A=“foo”
  • 积分属性B=3
  • 结果StringProperty C=“foo 3”
如何“绑定”属性,以便在A或B发生更改时C发生更改?(请注意,我不想对C所做的更改做出反应)


我尝试使用
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()
显示的不仅仅是它们的值。