tornadofx EventBus使用tableview对象展开表格行

背景:
假设我在一个视图中有一个表的多个片段 ,每个都有一个rowExpander。

预期的行为:
如果在一个表格片段中我展开一行,其他片段相同的索引行应该展开。 相同的崩溃

我的进度:
样品片段:

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 ExpandDataEvent(val index: Int) : FXEvent() 

我从“订阅”中得到的理解是,当事件被触发时,它会被调用(当用户通过双击/单击加号扩展行时,我正在触发事件)。 并且由于订阅被放置在tableview中,所以它被调用来存在所有的表格片段(这是我想要的)。 但在订阅方法中,我正在做一个selectionModel.select(event.index),它只选择相应的索引行。 我想扩大行(最好通过使用selectionModel)

问题2:
是否可以删除加号列? 对于rowExpand,如果我已经将expandOnDoubleClick设置为true,我不希望我的tableview中的加号列。

rowExpander构建器返回实际的ExpanderColumn ,它基本上是一个普通的TableColumn 。 保存对扩展器的引用,以便稍后对其进行操作:

 val expander = rowExpander(true) { ... } 

正下方,您现在可以隐藏扩展器列:

 expander.isVisible = false 

现在很容易从事件订阅者切换特定行的展开状态:

 subscribe<ExpandDataEvent> { event -> expander.toggleExpanded(event.index) selectionModel.select(event.index) } 

您可能需要仔细检查是否没有为触发事件的tableview切换扩展器,因此请考虑在事件中包含事件源,并在订阅服务器上进行区分。

我将调查如果我们可以添加一个可见的布尔参数的rowExpander生成器功能,所以你不需要手动调用isVisible 🙂