为什么需要判断`item == null ||方法updateIrem()中的empty`

时间:2017-07-20 12:54:23

标签: javafx-2 javafx-8

为什么需要在方法updateIrem()中判断item == null || empty

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 :(得分:0)

当UI决定更新项目时,会调用此方法。 empty参数是UI告诉您单元格是否应为空的方式。请参阅方法&#39; s javaDoc:

  

我们测试empty条件,如果是,我们   将text和graphics属性设置为null。如果我们不这样做,   几乎可以保证最终用户将看到图形工件   意外地在细胞中。

具体而言,empty参数描述为:

  

@param为空此单元格是否表示列表中的数据。如果它   是空的,那么它不代表任何域数据,而是一个单元格   被用来渲染一个空的&#34;行。

为什么我们不能仅依靠item == null是组件创建者的实现决策这一事实,如果您需要确切知道,请尝试深入了解组件源代码。