这是我显示数据数组的方式:
private val data = observableArrayList(
arrayOf("AAA", "111"),
arrayOf("BBB", "222"),
arrayOf("CCC", "333")
)
class HelloWorld : View() {
override val root = tableview<Array<String>>(data) {
column("name") { cellDataFeatures: TableColumn.CellDataFeatures<Array<String>, String> ->
SimpleStringProperty(cellDataFeatures.value[0])
}
column("value") { cellDataFeatures: TableColumn.CellDataFeatures<Array<String>, String> ->
SimpleStringProperty(cellDataFeatures.value[1])
}
}
}
它可以工作,但是代码非常复杂。有什么更好的方法吗?
(也许定义一个类来保存数据会使其更简单,但我只想测试一些不常见的情况)
更新:
完整的演示项目:https://github.com/javafx-demos/tornadofx-tableview-array-data-demo
答案 0 :(得分:1)
这是定义列的一种简单方法:
class HelloWorld : View() {
override val root = tableview(data) {
column<Array<String>, String>("name", { it.value[0].toProperty() })
column<Array<String>, String>("value", { it.value[1].toProperty() })
}
}
也就是说,使用专门的数据结构可以减少麻烦:)
另一种方法是只配置单元格项目类型,然后配置值工厂:
column("name", String::class) {
value { it.value[0] }
}
column("value", String::class) {
value { it.value[1] }
}