Kotlin 刷新图像视图 TornadoFX

Kotlin refresh imageview TornadoFX

我正在尝试通过按钮点击刷新 imageview 的图像,但它似乎不起作用。 这是我的代码:

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 似乎并不关心它。

我真的不明白为什么它会修复它,但我尝试将值放入 SimpleStringProperty 并将该变量传递给 imageview,现在它在 buttonclick 上更新。

val simplestring = SimpleStringProperty("slime.png")
...
imageview(observablepic)
center = button("Change image") {
    action { 
        currentenemy.value += 1 
        simplestring.value = controller.monsters[currentenemy.value]
    }
}
...
class MyController: Controller() {
    val monsters = FXCollections.observableArrayList("slime.png", "goblin.png", "mage.png", "knight.png", "boss.png")
}

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

例如:

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