Я учу Kotlin и TornadoFX программировать очень простую задачу: две кнопки, одна с Int 1, а другая с Int 200. Когда я нажимаю кнопку один, я хочу обновить и отобразить кнопку один с Int 2 идругие с Int 201. Следующая программа позволила мне проверить данные обновления, и все казалось правильным. У меня вопрос, почему отображение на кнопках не будет обновляться соответственно. Пожалуйста, помогите.
class MainView : View("Hello TornadoFX") {
val controllera: ControllerA by inject()
val i: Int? = 1
val j: Int? = 2
override val root = hbox {
button(controllera.s1.toString()) {
setOnAction {
setId(i.toString())
println(" in view button 1 s1: { ${controllera.s1.toString()} }")
controllera.temp(i)
}
}
button(controllera.s2.toString()) {
setOnAction {
setId(j.toString())
println(" in view button 2 s2: { ${controllera.s2.toString()} }")
controllera.temp(j)
}
}
label(title) {
addClass(Styles.heading)
}
}
}
class ControllerA :Controller(){
var s1: Int =1
var s2: Int = 200
fun temp(k: Int?) {
when( k) {
1 -> {println("botton ID " +k)
println(" current value of s1: $s1 ")
s1 = s1+1
println(" new value of s1 to update: $s1 ")
s2 = s2 +1
println(" new value of s2 to update: $s2 ")}
2 -> {
println("botton ID " + k)
println("current value of s2: $s2 ")}
else -> println("default")
}
}
}
test output at various location:
in view button 1 s1: { 1 } //In MainView
botton ID 1 //in ControllerA
s1: 1
new value of s1 to update: 2
new value of s2 to update: 201
in view button 2 s2: { 201 } //in MainView
botton ID 2 //in ControllerA
current value of s2: 201
Note: those updated data will not be display on button text.