TableCell中的TableCell css类没有更新滚动

时间:2015-07-14 02:21:02

标签: javafx javafx-8

我有一个TableView,我正在努力使它当我点击一行时,上面的所有行将改变他们的风格(变成灰色)。我创建了一个自定义TableCell,其updateItem方法如下所示。 # Controller ... def index peoples = People.where(hidden_flag: false) render json: peoples.as_json end CSS类有一些重要的属性。

在每个updateItem上,我检查行索引是高于还是低于某个阈值,然后应用或删除样式类。

一切正常,直到我滚动;当我向上滚动时,所有内容都应用了应用的样式。但是,当我向下滚动时,随机行会应用样式,而其他行则不会。

奇怪的是,如果我使用setStyle()应用样式,一切都能正常工作。

Custom Table Cell片段:

.row-to-ignore

CSS文件:

@Override protected void updateItem(String cellItem, boolean empty) {
    super.updateItem(cellItem, empty);

    if (cellItem != null) {
        setText(cellItem);

        // Apply styling depending on whether the row is selected as not-data.
        if ((this.getTableRow().getIndex()) < mHighlightIndex)
        {
            // Apply "ignore" styling.
            this.getStyleClass().add("row-to-ignore");
        } else {
            // Remove ignore styling.
            this.getStyleClass().remove(".row-to-ignore");
        }
    } else {
        setText("");
    }
}

1 个答案:

答案 0 :(得分:3)

我在post找到了答案。事实证明,我正在使用样式类将该类的多个副本添加到列表中。删除课程的所有副本使问题消失。

我改变了这个:

// Apply "ignore" styling.
this.getStyleClass().add("row-to-ignore");

到此:

// Apply "ignore" styling. Make sure not to add duplicate copies of class to style list.
if (!this.getStyleClass().contains("row-to-ignore")) {
    this.getStyleClass().add("row-to-ignore");
}