无法更新按钮显示数据



我正在学习Kotlin和TornadoFX来编程一个非常简单的任务:两个按钮,一个是Int 1,另一个是Int 200。 当我单击按钮 1 时,我想使用 Int 2 更新和显示按钮 1,使用 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.

您需要使用可观察的属性和绑定。刚开始编写代码而不阅读框架不是一个好方法。我建议您阅读该指南作为起点。这是重写的代码,以便每个按钮在单击时显示并增加相应的数字:

class MainView : View("Hello TornadoFX") {
val controllera: ControllerA by inject()
val myModel: MyModel by inject()
override val root = hbox {
button(myModel.s1.asString()) {
action {
controllera.inc(myModel.s1)
}
}
button(myModel.s2.asString()) {
action {
controllera.inc(myModel.s2)
}
}
label(title)
}
}
class MyModel : ViewModel() {
val s1 = SimpleIntegerProperty(1)
val s2 = SimpleIntegerProperty(200)
}
class ControllerA : Controller() {
fun inc(v: IntegerProperty) {
v.value = v.value + 1
}
}

相关内容

  • 没有找到相关文章

最新更新