javaFX tableview无法正确渲染行

时间:2017-07-20 14:47:39

标签: javafx javafx-2 javafx-8

如果我在表格中添加更多项目,直到它生成滚动条。这时,当我滚动滚动条时,名字不等于" Jacob"呈黄色。 enter image description here

table.setRowFactory(row -> new TableRow<Person>() {
        @Override
        public void updateItem(Person item, boolean empty) {
            super.updateItem(item, empty);
            if (item == null || empty) {

            } else {
                if (item.getFirstName().equals("Jacob")) {
                    setStyle("-fx-background-color: yellow");
                }
            }
        }
    });

1 个答案:

答案 0 :(得分:1)

滚动时,会重复使用这些行来表示显示的新项目。您的行工厂从不一旦设置就删除了一个样式,因此任何黄色的行都保持黄色,无论它们被重用哪个项目。

换句话说,一旦特定行显示名为“Jacob”的人,该行将变为黄色,然后该样式将永远不会改变(它将始终保持黄色),即使该行被重复使用以显示另一个人。

如果该行不应为黄色,则需要重置样式:

table.setRowFactory(row -> new TableRow<Person>() {
    @Override
    public void updateItem(Person item, boolean empty) {
        super.updateItem(item, empty);
        if (item == null || empty) {
            setStyle("");
        } else {
            if (item.getFirstName().equals("Jacob")) {
                setStyle("-fx-background-color: yellow");
            } else {
                setStyle("");
            }
        }
    }
});