标签的格式文本

Pie*_*rre 3 javafx kotlin tornadofx

我在一个由整数属性控制的视图中有一个标签,当值为负时它显示一个减号,当值为正时它不显示。但是,我希望标签显示“+5”、“-3”...

以下面的代码为例

import javafx.beans.property.SimpleIntegerProperty
import tornadofx.*

class MyView : View() {

   val negProp = SimpleIntegerProperty(-3) // this prop is in a ItemViewModel
   val posProp = SimpleIntegerProperty(+4) // this prop is in a ItemViewModel

    override val root = hbox {
        label(negProp)      // shows - 3
        label(posProp)      // shows 4
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦属性发生变化,有没有办法格式化文本?谢谢你。

Edv*_*yse 5

您可以创建一个字符串绑定来保存要在标签中显示的值,然后将标签的 value 属性绑定到该值:

val prop = SimpleIntegerProperty(1)
val propDesc = prop.stringBinding { "%+d".format(it) }
Run Code Online (Sandbox Code Playgroud)

现在你可以这样做:

label(propDesc)
Run Code Online (Sandbox Code Playgroud)

每当属性更改值时,标签就会更新。

你当然也可以内联它:

label(prop.stringBinding { "%+d".format(it) })
Run Code Online (Sandbox Code Playgroud)