我是TornadoFx的新手,但正在尝试(通过扩展名,它也是JavaFX的新手)。 我有一个这样定义的列表视图:
private var colorList = mutableListOf<Color>
//other things in init block
colorpicker(mode = ColorPickerMode.MenuButton) {
valueProperty().onChange {
if (it != null) {
colorList.add(it)
}
}
}(Color.BLACK,Color.WHITE).observable()
listview(colorList) {
cellFormat {
text = it.toString()
style {
baseColor = it
}
}
contextmenu {
item("Delete").action {
if (selectedItem != null) {
colorList.remove(selectedItem)
}
}
}
}
//continue init block
从列表视图中添加和删除颜色效果很好,但是如果不再占用单元格中的颜色,则该颜色不会消失 Example of what is happening
答案 0 :(得分:0)
通过cellFormat
函数,您可以为列表中的每个项目配置列表单元格。
但是,当某行没有列表项时,则不会运行该回调,因此您无法使用cellFormat
方法将样式应用于空行。一种解决方案是实现自己的ListCell
并始终清除单元格的style
属性,但是我认为可以通过在框架之前始终清除style
属性来实际上解决此问题。单元被重用。我只是想在框架中进行此更改,它可以解决您的代码示例中的问题。
我现在将提交更改,请使用tornadofx-1.7.17-SNAPSHOT
进行尝试:)