首页 > 解决方案 > Kotlin 刷新 imageview TornadoFX

问题描述

我试图刷新按钮叮当声上的图像视图的图像,但它似乎不起作用。这是我的代码:

class MasterView : View("Master View") {
    val controller: MyController by inject()
    val currentenemy = SimpleIntegerProperty(0)

    override val root = borderpane() {
        right = imageview(controller.monsters[currentenemy.value]) {
            setFitHeight(250.0)
            setFitWidth(175.0)
        }
        center = button("Change image") {
            action { currentenemy.value += 1 }
        }
    }
}
class MyController: Controller() {
    val monsters = FXCollections.observableArrayList("slime.png", "goblin.png", "mage.png", "knight.png", "boss.png")
}

我知道这些值正在改变,但 imageview 似乎并不关心它。

标签: javaandroidkotlindesktop-applicationtornadofx

解决方案


您正在使用字符串值创建图像视图。currentEnemy当您的属性更改时,没有什么可以告诉图像视图更新。为此,您需要为图像视图提供一个可以跟踪的可观察值。

例如:

right = imageview(currentEnemy.stringBinding { controller.monsters[it ?: 0] }) {
    ...
}

推荐阅读