使用伪类不更改javafx tableview行文本颜色

时间:2016-06-29 15:13:16

标签: javafx-8 javafx-css

我需要在tableview中只显示带有红色文本的几行,但没有结果!

我的代码:

PseudoClass pClass = PseudoClass.getPseudoClass("warn");
myTable.setRowFactory(new Callback<TableView<MyData>, TableRow<MyData>>() {

                    @Override
                    public TableRow<MyData> call(TableView<MyData> param) {
                        return new TableRow<MyData>() {
                            @Override
                            protected void updateItem(MyData item, boolean empty) {
                                super.updateItem(item, empty);
                                if (item == null || empty) {
                                    return;
                                }
                                setItem(item);
                                pseudoClassStateChanged(pClass, item.getWarning());
                            }
                        };
                    }
                });

css

.table-view .table-row-cell .text{
    -fx-fill: black; 
}

.table-view .table-row-cell .text:warn{
    -fx-fill: red; 
}

任何人都可以查看或建议一些更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您在TableRow上设置了伪类,而不在.text节点上设置伪类。因此,伪类选择器需要与选择TableRow的选择器组合,而不是选择文本元素的选择器:

.table-view .table-row-cell:warn .text {