JavaFX TableView更改选定的单元格颜色

时间:2015-04-24 21:13:57

标签: css javafx tableview selection tablecell

我有一个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也是如此。单元格正确显示黄色背景和黑色文本,但选择时没有任何更改,这次不会出现背景事件。

有什么想法吗?我做了很多研究,但找不到任何有效的解决方案。

1 个答案:

答案 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将起作用。