如何使用TornadoFx将组合框添加到Kotlin的tableview中

时间:2018-03-05 07:55:04

标签: java javafx kotlin tornadofx

我正在尝试使用tornadofx将一个组合框添加到tableview;最接近我认为应该工作的是:column<AvailableRooms, ComboBox<String>>("Pets Allowed", combobox<String>(values = listOf<String>("3","5")))

我已经阅读了文档,但似乎有很多是半编写的,并且不可靠。我是JavaFx的新手,我正在学习。我学习了Kotlin因为我认为使用他们的JavaFx版本(TornadoFx)会更容易理解。

非常感谢任何指导。

IMG: enter image description here

更新

TableView img: enter image description here

1 个答案:

答案 0 :(得分:3)

列构建器的第二个类型参数不是UI元素类型,而是值类型,因此在您的情况下它应该是String。这是一个完整的示例应用程序,展示了在TableView中使用ComboBox:

class Person {
    val nameProperty = SimpleStringProperty()
    var name by nameProperty

    val favoriteFruitProperty = SimpleStringProperty()
    var favoriteFruit by favoriteFruitProperty
}

class MyView : View() {
    val fruits = listOf("Apple", "Banana", "Pear")

    override val root = tableview<Person> {
        isEditable = true

        column("Name", Person::nameProperty)
        column<Person, String?>("Favorite fruit", Person::favoriteFruitProperty).useComboBox(fruits.observable())

        // Populate with test data. Don't try this at home
        asyncItems {
            listOf(Person().apply { name = "John"; favoriteFruit = "Apple" }, Person().apply { name = "Jane" })
        }
    }
}

该指南确实要求您至少了解一些JavaFX基础知识,因此如果您之前没有JavaFX知识,那么它肯定是不完整的。但它不应该是不可靠的,所以如果有错误,或者你有改进建议,请告诉我。