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

Nar*_*man 0 javafx tableview

我得到这样的TableView:

TableView tableView = (TableView) ((AnchorPane) node).getChildren().get(0);
Run Code Online (Sandbox Code Playgroud)

用它填充数据

tableView.setItems(FXCollections.observableList(vehicles));
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

jew*_*sea 6

Tableview css样式是微妙和复杂的.

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

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

由于存在许多:selected规则,您可能需要在几个位置复制相同的属性设置(类似于如何定义默认属性值).

背景资源

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

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

快速换色修复

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

.root { -fx-selection-bar-text: firebrick; }
Run Code Online (Sandbox Code Playgroud)

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

  • 并将这些样式添加到 tableview 的容器中 - #mainAnchorPane { -fx-selection-bar-text:white; } #mainAnchorPane .table-view:focused .table-row-cell:filled:selected .table-cell { -fx-text-fill:-fx-selection-bar-text; -fx-背景颜色:-fx-选择栏;} (2认同)