JavaFX TableView行颜色

时间:2016-03-18 14:26:19

标签: css javafx tableview background-color tablerow

我想根据单元格中的数据更新我的TableView行颜色,所以我使用pseeudoClass来引用Css中的样式。行按我想要的颜色着色但是,它丢失了选择和鼠标悬停效果,现在我有一个彩色的行,没有任何指示选定的行。这是我的代码:

    PseudoClass myPseudoClass = PseudoClass.getPseudoClass("dtta_dep");
    PseudoClass myPseudoClass1 = PseudoClass.getPseudoClass("dtta_dest");
    fplTableView.setRowFactory(tv -> new TableRow<FlightPlan>() {
        @Override
        public void updateItem(FlightPlan item, boolean empty) {
            super.updateItem(item, empty);

               this.setFocused(true);
               this.setHover(true);
                System.out.println("myPseudoClass = "+myPseudoClass.getPseudoClassName());
                pseudoClassStateChanged(myPseudoClass, (! empty) && item.Dep_aerodomProperty().get().equalsIgnoreCase("DTTA"));
                pseudoClassStateChanged(myPseudoClass1, (! empty) && item.Dest_aerodomProperty().get().equalsIgnoreCase("DTTA"));


        }
    });
        getData();

        for (int i = 0; i < listF.size(); i++) {
            System.out.println(listF.get(i).Dep_aerodomProperty().get());
        }
      selectWithService();

    });

css文件:

     .table-row-cell {
    -fx-background-color: linear-gradient(white 0%, white 90%, #e0e0e0 90%);
}
.table-row-cell:selected {
    -fx-background-color: linear-gradient(#95caff 0%, #77acff 90%, #e0e0e0 90%);
}

    .table-row-cell:dtta_dep .table-cell {
        -fx-text-fill: red;
        -fx-background-color:beige;
    } 
    .table-row-cell:dtta_dest .table-cell {
        -fx-text-fill: blue;
        -fx-background-color:greenyellow;
    } 

1 个答案:

答案 0 :(得分:0)

在表格行单元格上使用-fx-background代替-fx-background-color来设置未选择的背景。您可以使用-fx-selection-bar设置所选颜色。文本填充在具有-fx-text-background-color颜色的表格单元格中定义(即-fx-background上文本的文本填充),因此您可以覆盖单元格中文本填充的文本填充。

.table-row-cell {
    -fx-background: linear-gradient(white 0%, white 90%, #e0e0e0 90%);
    -fx-selection-bar: linear-gradient(#95caff 0%, #77acff 90%, #e0e0e0 90%);
}

.table-row-cell:dtta_dep {
    -fx-text-background-color: red;
    -fx-background: beige;
} 
.table-row-cell:dtta_dest {
    -fx-text-background-color: blue;
    -fx-background:greenyellow;
}