JavaFX tableview与CSS滚动问题

时间:2018-09-18 18:22:17

标签: javafx

我目前面临javafx表的问题。我有一个显示主题列表的表格视图。每行的背景颜色取决于是否可以注册主题。可以注册具有绿色背景的主题,而不能注册具有粉红色背景的主题。滚动表格时出现问题。

TableView before scrolling

TableView after scrolling down and up

滚动后,行的背景颜色已更改,绿色背景的对象可能变为粉红色,反之亦然。无需在表中添加CSS即可完美运行。

我用来设置行的背景色的代码

tblAvailableSubjects.setRowFactory((TableView<Subject> param) -> {
            TableRow<Subject> row = new TableRow<>();
            row.emptyProperty().addListener((obs, wasEmpty, isEmpty) -> {
                if(isEmpty) {
                    row.setContextMenu(null);
                    row.setStyle("-fx-border-color: transparent");
                } else {

                    Subject subject = row.getItem();

                    if(subject.getSubjectEvaluation().equals(SubjectEvaluation.COMPLETED)) {
                        row.setStyle("-fx-background: #B2EBF2");
                    } else if(subject.getSubjectEvaluation().equals(SubjectEvaluation.FAILED)) {
                        row.setStyle("-fx-background: #FF0000");
                        row.setContextMenu(tblAvailableContext);
                    } else if(subject.getSubjectEvaluation().equals(SubjectEvaluation.OKAY)) {
                        row.setStyle("-fx-background: #8BC34A");
                        row.setContextMenu(tblAvailableContext);
                    } else if(subject.getSubjectEvaluation().equals(SubjectEvaluation.ENROLLWITHCOREQ)) {
                        row.setStyle("-fx-background: #FFEB3B");
                        row.setContextMenu(tblAvailableContext);
                    } else if(subject.getSubjectEvaluation().equals(SubjectEvaluation.CANTENROLL)) {
                        row.setStyle("-fx-background: #FFCDD2");
                    }
                }
            });
            return row;
        });

表的CSS

.table-view {
    /*     Constants used throughout the tableview. */
    -fx-table-header-border-color: transparent;
    -fx-table-cell-border-color: -fx-box-border;
    /*    Horizontal Lines*/
    -fx-background-color: transparent;
}

.table-view .filler, .table-view .column-header
{
    -fx-size: 40;
    -fx-border-style: null;
    -fx-border-color: rgb(200.0, 200.0, 200.0);
    -fx-border-width: 0 0 1 0;
    -fx-background-color: transparent;
}

.table-view .show-hide-columns-button
{
    -fx-background-color: transparent;
}

.table-view .column-header .label,
.table-view .column-drag-header .label
{
    -fx-alignment: CENTER_LEFT;
}

.table-view .column-header-background
{
    -fx-background-color: transparent;
}

.table-row-cell {
    -fx-cell-size: 30px;
}

.table-cell {
    -fx-border-color: transparent;
    -fx-border-width: 1;
}

编辑:主题的SubjectEvaluation值没有改变,似乎在滚动时会在行之间切换上下文菜单和背景颜色。

我希望有人可以帮助我。谢谢。

0 个答案:

没有答案