我有一个JavaFX TableView和一个ListView,它们都使用自定义单元工厂。特别是我已经重写了updateItem方法,以便根据单元格值绑定特定的CSS类。
这是我的CSS文件的一部分:
.tissueCell {
-fx-text-fill: #F5AD11;
}
.tissueCell:selected {
-fx-background-color: #F5AD11;
-fx-text-fill: white;
}
.significantDataCell {
-fx-background-color: yellow;
-fx-text-fill: black;
}
.significantDataCell:selected {
-fx-background-color: white;
-fx-text-fill: black;
}
对于ListView,一切都完美无缺:文本以正确的颜色显示,当选择单元格时,文本变为白色,背景填充正确的颜色。
我遇到了TableView的问题。未选中时,单元格中的文本将以所选颜色显示,但是当选择单元格时,背景将使用默认的JavaFX颜色填充选定的表格单元格背景,文本颜色仍为#F5AD11(它不会变为白色)。
使用.significantDataCell类的TableCells也是如此。单元格正确显示黄色背景和黑色文本,但选择时没有任何更改,这次不会出现背景事件。
有什么想法吗?我做了很多研究,但找不到任何有效的解决方案。
答案 0 :(得分:4)
默认情况下,TableView
不允许选择单个单元格,但允许选择行。因此,选择器.table-cell:selected
永远不会匹配默认选择模式中的任何单元格。在这种情况下,您需要
.table-row-cell:selected .table-cell {
/* style definitions */
}
或在您的方案中
.table-row-cell:selected .tissue-cell {
-fx-background-color: #F5AD11;
-fx-text-fill: white;
}
等
如果您允许表格使用单元格选择,请致电
myTableView.setCellSelectionEnabled(true);
然后在单击鼠标(等)时选择单个单元格,因此原始CSS将起作用。