自定义单元格格式ListView TornadoFx删除项

时间:2018-07-21 19:21:31

标签: tornadofx

我是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

1 个答案:

答案 0 :(得分:0)

通过cellFormat函数,您可以为列表中的每个项目配置列表单元格。

但是,当某行没有列表项时,则不会运行该回调,因此您无法使用cellFormat方法将样式应用于空行。一种解决方案是实现自己的ListCell并始终清除单元格的style属性,但是我认为可以通过在框架之前始终清除style属性来实际上解决此问题。单元被重用。我只是想在框架中进行此更改,它可以解决您的代码示例中的问题。

我现在将提交更改,请使用tornadofx-1.7.17-SNAPSHOT进行尝试:)