首页
学习
活动
专区
圈层
工具
发布

javafx框架tornadofx入门26_treeview_增加删除修改

在上一篇的基础上,为treeview添加“增加删除修改”的功能,其中数据类Company,Department,Staff的代码在在上一篇中

代码语言:javascript
复制
import javafx.scene.control.TreeItem
import javafx.scene.control.TreeView
import javafx.scene.layout.Priority
import tornadofx.*

class MainView26 : View("tornadofx入门26_treeview_增加删除修改") {
    val companies = (1..2).map {
        Company("Company$it")
    }
    val obj = objectProperty<Any>()
    lateinit var tv: TreeView<Any>
    init {
        companies.forEach { company ->
            company.departments.setAll((1..2).map {
                Department("${company.name}-Department$it")
            })
            company.departments.forEach { department ->
                department.staffs.setAll((1..3).map {
                    Staff("${department.name}-Staff$it")
                })
            }
        }
    }
    override val root = borderpane {
        center = vbox {
            treeview<Any> {
                tv = this
                root = TreeItem(Company("all"))
                populate { parent ->
                    parent.isExpanded = true
                    val itemValue = parent.value
                    when {
                        parent == root -> companies
                        itemValue is Company -> itemValue.departments
                        itemValue is Department -> itemValue.staffs
                        else -> null
                    }
                }
                bindSelected(obj)
                obj.onChange {
//                    println(it)
                }

代码语言:javascript
复制
                cellFormat {
                    text = when (it) {
                        is Company -> it.name
                        is Department -> it.name
                        is Staff -> it.name
                        else -> null
                    }
                }
                vgrow = Priority.ALWAYS
            }
        }
        setPrefSize(1000.0, 700.0)
    }
}
下一篇
举报
领券