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] }) {
...
}
我正在尝试通过按钮点击刷新 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] }) {
...
}