tornadofx EventBus 使用 table 视图对象扩展 table 行
tornadofx EventBus expand table row using tableview object
背景:
假设我在视图 中有 单个 table 的多个片段,每个片段都有一个 rowExpander。
预期行为:
如果在一个 table 片段中展开一行,其他片段相同的索引行应该展开。 折叠相同
我的进度:
示例片段:
tableview(dataset) {
column("First Name", Person::firstNameProperty)
column("Last Name", Person::lastNameProperty)
rowExpander(true) {
selectedData.item?.apply {
fire(ExpandDataEvent(dataset.indexOf(this)))
}
column("Mobile Nos.", Person::mobileNumProperty)
column("Email Ids", Person::emailIdProperty)
}
bindSelected(selectedData)
subscribe<ExpandDataEvent> { event ->
selectionModel.select(event.index)
}
}
事件Class:
class ExpandDataEvent(val index: Int) : FXEvent()
我从 "subscribe" 中了解到,它会在触发事件时被调用(目前,只要用户通过 double-click/clicking 加号扩展行,我就会触发事件);由于订阅位于 table 视图内,因此会调用所有存在的 table 片段(这是我想要的)。但是在订阅方法中,我正在做一个 selectionModel.select(event.index) ,它只选择相应的索引行。我想扩展行(最好使用 selectionModel)
问题 2:
是否可以删除加号列?对于 rowExpand,如果我将 expandOnDoubleClick 设置为 true,我不想在我的 table 视图中显示加号列。
rowExpander
生成器 returns 实际 ExpanderColumn
基本上是正常的 TableColumn
。保存对扩展器的引用,以便您稍后可以对其进行操作:
val expander = rowExpander(true) { ... }
在正下方,您现在可以隐藏扩展列:
expander.isVisible = false
现在也可以轻松地从事件订阅者切换特定行的展开状态:
subscribe<ExpandDataEvent> { event ->
expander.toggleExpanded(event.index)
selectionModel.select(event.index)
}
您可能需要仔细检查您没有为触发事件的 tableview 切换扩展器,因此请考虑在您的事件中包含事件源并在订阅者中区分它。
我将研究是否可以向 rowExpander 构建器函数添加一个可见的布尔参数,这样您就不需要手动调用 isVisible
:)
背景:
假设我在视图 中有 单个 table 的多个片段,每个片段都有一个 rowExpander。
预期行为:
如果在一个 table 片段中展开一行,其他片段相同的索引行应该展开。 折叠相同
我的进度:
示例片段:
tableview(dataset) {
column("First Name", Person::firstNameProperty)
column("Last Name", Person::lastNameProperty)
rowExpander(true) {
selectedData.item?.apply {
fire(ExpandDataEvent(dataset.indexOf(this)))
}
column("Mobile Nos.", Person::mobileNumProperty)
column("Email Ids", Person::emailIdProperty)
}
bindSelected(selectedData)
subscribe<ExpandDataEvent> { event ->
selectionModel.select(event.index)
}
}
事件Class:
class ExpandDataEvent(val index: Int) : FXEvent()
我从 "subscribe" 中了解到,它会在触发事件时被调用(目前,只要用户通过 double-click/clicking 加号扩展行,我就会触发事件);由于订阅位于 table 视图内,因此会调用所有存在的 table 片段(这是我想要的)。但是在订阅方法中,我正在做一个 selectionModel.select(event.index) ,它只选择相应的索引行。我想扩展行(最好使用 selectionModel)
问题 2:
是否可以删除加号列?对于 rowExpand,如果我将 expandOnDoubleClick 设置为 true,我不想在我的 table 视图中显示加号列。
rowExpander
生成器 returns 实际 ExpanderColumn
基本上是正常的 TableColumn
。保存对扩展器的引用,以便您稍后可以对其进行操作:
val expander = rowExpander(true) { ... }
在正下方,您现在可以隐藏扩展列:
expander.isVisible = false
现在也可以轻松地从事件订阅者切换特定行的展开状态:
subscribe<ExpandDataEvent> { event ->
expander.toggleExpanded(event.index)
selectionModel.select(event.index)
}
您可能需要仔细检查您没有为触发事件的 tableview 切换扩展器,因此请考虑在您的事件中包含事件源并在订阅者中区分它。
我将研究是否可以向 rowExpander 构建器函数添加一个可见的布尔参数,这样您就不需要手动调用 isVisible
:)