JavaFX TreeTableView 无法更新单元格值

代码(JavaFX 应用程序,kotlin):


class TempController {

    @FXML

    private lateinit var treeTable: TreeTableView<SkillTableDAO>

    @FXML

    private lateinit var colValue: TreeTableColumn<SkillTableDAO, String>


    private val skillTree: MutableMap<Long, TreeItem<SkillTableDAO>> = ConcurrentHashMap()


    @Suppress("unused")

    fun initialize() {

        colValue.setCellValueFactory {

            ReadOnlyStringWrapper(it.value.value.getValue())

        }


        val treeRoot = TreeItem<SkillTableDAO>(null).apply { isExpanded = true }

        treeTable.isShowRoot = false

        treeTable.root = treeRoot


        Pck_CmdSetSkill.listen { packet ->

            Platform.runLater {

                var node = skillTree[packet.id]

                if (node != null) {

                    node.value.onPacket(packet)

                    // Packets goning unordered, so try to find parent

                    if ((node.parent == treeRoot || node.parent.value.id != node.value.parentId) && skillTree.containsKey(packet.parentId)) {

                        node.parent.children.remove(node)

                        skillTree[packet.parentId]!!.children.add(node)

                    }

                } else {

                    node = TreeItem(SkillTableDAO(packet))

                    skillTree[packet.id] = node

                    (skillTree[packet.parentId] ?: treeRoot).children.add(node)

                }

            }

        }


    }


    @Suppress("unused")

    class SkillTableDAO(packet: Pck_CmdSetSkill.Packet) {

        val id: Long = packet.id

        val parentId: Long = packet.parentId


        var value: Float = packet.value


        fun onPacket(packet: Pck_CmdSetSkill.Packet): SkillTableDAO {

            this.value = packet.value

            return this

        }


        fun getValue() = value.toString()

    }

}

当我更改对象的值时(Pck_CmdSetSkill.listen发生时),单元格的值保持在其原始状态。我究竟做错了什么?我尝试了一些可观察的变体,但失败了......我也尝试过,it.value.value.value.toString()但没有发生新的事情。


慕桂英546537
浏览 247回答 1
1回答

米脂

Pck_CmdSetSkill 仅被称为初始,另一个地方的错误代码 =(
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java