【问题标题】:JavaFX, TableView and the font color of the selected rowJavaFX、TableView 和选中行的字体颜色
【发布时间】:2013-08-07 00:06:04
【问题描述】:

我得到这样的 TableView:

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

用类似的数据填充它

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

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

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

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

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

【问题讨论】:

    标签: javafx tableview


    【解决方案1】:

    Tableview css 样式微妙而复杂。

    解决方案

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

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

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

    背景资源

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

    如果您感到困惑,请咨询css reference guide 和css tutorials。

    快速换色修复

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

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

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

    【讨论】:

    • 感谢jewelsea,您使用-fx-selection-bar-text 和-fx-selection-bar 的想法解决了我的问题
    • 但是,如果您使用自定义 cellfactory 并修改 tablecell css,您也需要为该 tablecell 重新分配样式(通过一些未知的原因)
    • 例如在 tablecellfactory 中修改的 tablecell 以显示与我所做的相同的选择栏:
    • 并将这些样式添加到 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-选择栏; }
    • @jewelsea,在与 JavaFX CSS 斗争了很长时间后,我终于采纳了您的建议:“去源头...”。这是必须的,也是处理 JavaFX 的复杂性和与 CSS 本身的偏差的唯一方法。谢谢。
    【解决方案2】:

    此 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;
     }
    

    【讨论】:

      猜你喜欢
      • 2011-10-23
      • 1970-01-01
      • 2016-04-13
      • 2015-12-04
      • 2018-03-03
      • 2016-12-05
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多