JavaFX,TableView和所选行的字体颜色

时间:2013-08-06 05:34:24

标签: javafx tableview

我得到这样的TableView:

TableView tableView = (TableView) ((AnchorPane) node).getChildren().get(0);

等数据填充它
tableView.setItems(FXCollections.observableList(vehicles));

这部分是好的。但是,我想更改tableView中当前行的字体属性,我无法知道如何操作

我不想设置tableView.getSelectionModel().setCellSelectionEnabled(true);,因为我想显示整行的选择,而不是单个单元格

我尝试在TableRow和Tabliew上应用一些css样式但没有任何成功。

有没有办法在TableView中更改当前所选行的字体属性?

2 个答案:

答案 0 :(得分:5)

Tableview css样式是微妙而复杂的。

解决方案

转到默认JavaFX控件css的源代码,并将具有.table-view psuedo-class的所有:selected部分复制到您自己的用户样式表中。

从您复制的每个css选择器部分中删除默认属性设置规则,并将其替换为您要为所选行应用的css。

由于存在大量:selected规则,您可能需要在几个位置复制相同的属性设置(类似于定义默认属性值的方式)。

背景资源

各个版本的默认样式表是:

如果您感到困惑,请咨询css reference guidecss tutorials

快速换色修复

请注意,如果只需要为选择栏文本设置填充颜色,则可以使用单个语句使用自己的常量覆盖默认常量颜色:

.root { -fx-selection-bar-text: firebrick; }

只需替换你想要的任何颜色的耐火砖。同样,-fx-selection-bar: midnightblue;可用于更改文本背景的颜色。

答案 1 :(得分:0)

此CSS规则可能有效:

 #mytable .table-cell {
    -fx-text-fill:red ;
    -fx-border-color: none;
 }

  #mytable .table-cell:hover {
    -fx-text-fill: rgb(103,183,89) ;
    -fx-border-color: none;
 }