【问题标题】:tornadofx EventBus expand table row using tableview objecttornadofx EventBus 使用 tableview 对象扩展表格行
【发布时间】:2016-12-26 18:23:38
【问题描述】:

背景:
假设我有视图中有单个表的多个片段,每个片段都有一个 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 中,因此会为所有存在的表片段调用它(这就是我想要的)。但是在 subscribe 方法中,我正在做一个 selectionModel.select(event.index) ,它只选择相应的索引行。我想扩展行(最好使用 selectionModel)

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

【问题讨论】:

    标签: javafx kotlin tornadofx


    【解决方案1】:

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

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

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

    expander.isVisible = false
    

    现在也可以轻松地从事件订阅者切换特定行的展开状态:

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

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

    我会调查我们是否可以向 rowExpander 构建器函数添加一个可见的布尔参数,这样您就不需要手动调用 isVisible :)

    【讨论】:

    • 啊这很容易!我正在尝试同样的事情,但是在火灾事件中将扩展器对象作为参数发送;并且总是得到相同的实例。谢谢:)
    • 太棒了 :) 我一定会在指南中提到这种使用模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多