JavaFX TreeTableView не может обновить значения ячеек - PullRequest
0 голосов
/ 10 марта 2019

Код (приложение 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(), но не произошло ничего нового.

1 Ответ

0 голосов
/ 18 марта 2019

Pck_CmdSetSkill был назван только начальным, неправильный код в другом месте = (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...