0

我得到这样的 TableView:

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

用类似的数据填充它

tableView.setItems(FXCollections.observableList(vehicles));

这部分没问题。但是,我想更改 tableView 中当前行的字体属性,但我不知道该怎么做

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

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

有什么方法可以更改 TableView 中当前选定行的字体属性?

4

2 回答 2

6

Tableview css 样式微妙而复杂。

解决方案

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

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

由于有很多:selected规则,您可能必须在几个地方复制相同的属性设置(类似于默认属性值的定义方式)。

背景资源

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

如果您感到困惑,请参阅css 参考指南css 教程。

快速换色修复

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

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

只需用您想要的任何颜色代替耐火砖即可。同样-fx-selection-bar: midnightblue;可以用来改变文本背景的颜色。

于 2013-08-06T13:22:16.913 回答
1

这个 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;
 }
于 2019-11-19T17:04:50.413 回答