Javafx 将LongProperty绑定到ListProperty的内部更改
我有三门课:Javafx 将LongProperty绑定到ListProperty的内部更改,javafx,kotlin,tornadofx,Javafx,Kotlin,Tornadofx,我有三门课: class A { //Duration in seconds private val durationProperty = SimpleLongProperty(300) var duration by durationProperty } 现在,我想在class B中创建并绑定durationProperty,作为class AdurationProperty的总和(这将敏感地将新的class A实例添加到列表中,并更改现有实例的任何持续时间)同样地
class A {
//Duration in seconds
private val durationProperty = SimpleLongProperty(300)
var duration by durationProperty
}
现在,我想在
class B
中创建并绑定durationProperty
,作为class A
durationProperty
的总和(这将敏感地将新的class A
实例添加到列表中,并更改现有实例的任何持续时间)同样地,在C类
-持续时间属性
中,B类
的持续时间乘以重复次数
我不知道kotlin,但答案应该很容易翻译
您需要使用“提取器”来处理此问题,使用:
FXCollections#observableArrayList(Callback<E, Observable[]> extractor)
FXCollections#observableArrayList(回调提取器)
比如:
observeList list=FXCollections.observearraylist(item->newobserveable[]{item.durationProperty});
list.addListener((InvalizationListener)可观察->{
//在这里更新你的总数
});
提取器会导致对列表中每个项的给定可观察数组的任何更改,从而触发要激发的列表的InvalizationListener和ListChangeListener。我不知道kotlin,但答案应该很容易翻译 您需要使用“提取器”来处理此问题,使用:
FXCollections#observableArrayList(Callback<E, Observable[]> extractor)
FXCollections#observableArrayList(回调提取器)
比如:
observeList list=FXCollections.observearraylist(item->newobserveable[]{item.durationProperty});
list.addListener((InvalizationListener)可观察->{
//在这里更新你的总数
});
提取器会导致对列表中每个项的给定可观察数组进行任何更改,从而触发要激发的列表的InvalizationListener和ListChangeListener。SephB的解决方案是正确的,但最后我使用了t。尽管有很多样板,但我发现它更有弹性。SephB的解决方案是正确的,但最后我使用了t。我发现它有点弹性,尽管有很多样板。这是一个评论而不是一个答案-请考虑把它作为评论在另一个答案下面:)这是一个评论而不是一个答案-请考虑把它作为评论在另一个答案下:
FXCollections#observableArrayList(Callback<E, Observable[]> extractor)
ObservableList<A> list = FXCollections.observableArrayList(item -> new Observable[] {item.durationProperty});
list.addListener((InvalidationListener) observable -> {
//Update you sum here
});