javafx框架tornadofx入门26_treetableview

2020-04-26 17:44:14 浏览数 (1)

1.定义商品数据类,包含名称和价格2个字段:

代码语言:javascript复制
data class Goods(var name: String, var price: Double = 0.0)

2.构建商品数据map,key为商品分类"水果"、"蔬菜"、"肉类",value为具体的商品列表:

代码语言:javascript复制
val tableData = mapOf(
    "水果" to arrayOf("苹果", "梨", "香蕉").map { Goods(it, (1..10).random() * 1.0) },
    "蔬菜" to arrayOf("大豆", "花菜", "土豆").map { Goods(it, (1..10).random() * 1.0) },
    "肉类" to arrayOf("牛肉", "猪肉", "羊肉").map { Goods(it, (1..10).random() * 1.0) }
)

3.用treetableview构建UI,每个treeitem包括名称和价格两列:

代码语言:javascript复制
treetableview<Goods> {
    column("商品名称", Goods::name){
        minWidth=200.0
    }
    column("价格", Goods::price){
        minWidth=200.0
    }
    root = TreeItem(Goods("商品"))
    populate { parent ->
        parent.isExpanded=true
        if (parent == root) tableData.keys.map {
            Goods(it).apply {
            // 将每个商品分类下的具体商品价格进行求和
                this.price = tableData[this.name]?.sumByDouble { it.price } ?: 0.0
            }
        }
        else tableData[parent.value.name]
    }
    resizeColumnsToFitContent()
    minWidth=500.0
}

4.完整代码:

0 人点赞