突出显示JavaFX TableRow中的多个单元格

时间:2016-03-18 15:42:33

标签: javafx tableview tablerow

Jewelsea提供了一个很好的例子,可以在GitHub突出显示表格行和单个单元格。但是,我对与之密切相关的事情感到非常困难。

这是一个截屏: enter image description here

使用他的示例,当我在“Will Pay Up”列中为单个单元格执行updateItem代码时,我还想突出显示相应的名称(可以在同一位置找到) TableRow)与将支付列中的单元格颜色相同。在我实际开发的代码中,我确保始终在第一列中找到该名称。

以下是他的updateItem代码中的几行(我希望这没关系):

// update the item and set a custom style if necessary
        if (item != null) {
          setText(item.toString());
          this.getStyleClass().add(item ? "willPayCell" : "wontPayCell");
          this.getTableRow().getStyleClass().add(item ? "willPayRow" : "wontPayRow");
        }

我们可以突出显示当前单元格(this.getStyleClass())或整行(this.getTableRow())但我无法找到访问当前行中另一个单元格的方法。

1 个答案:

答案 0 :(得分:0)

将单元格的样式类设置为常量,并根据项目的值设置行的样式类:

if (item != null) {
    setText(item.toString());
    if (! this.getStyleClass().contains("willPayCell")) {
        this.getStyleClass().add("willPayCell");
    }
    this.getTableRow().getStyleClass().removeAll("willPayRow", "wontPayRow");
    this.getTableRow().getStyleClass().add(item ? "willPayRow" : "wontPayRow");
}

然后您可以使用CSS来确定不同单元格的颜色:

.table-row-cell.willPayRow .table-cell {
    -fx-background: /* color for cells other than willPayCell in willPayRow */;
}
.table-row-cell.wontPayRow .table-cell {
    -fx-background: /* color for cells other than willPayCell in wontPayRow */;
}
.table-row-cell.willPayRow .willPayCell {
    -fx-background: /* color for willPayCell in willPayRow */;
}
.table-row-cell.wontPayRow .willPayCell {
    -fx-background: /* color for willPayCell in wontPayRow */;
}