Javafx 2 为什么需要在updateIrem()方法中判断'item==null | | empty'
为什么需要在updateIrem()方法中判断Javafx 2 为什么需要在updateIrem()方法中判断'item==null | | empty',javafx-2,javafx-8,Javafx 2,Javafx 8,为什么需要在updateIrem()方法中判断item==null | | empty table.setRowFactory(行->新表行(){ @凌驾 public void updateItem(个人项目,布尔值为空){ super.updateItem(项,空); 如果(项==null | |空){ }否则{ if(item.getFirstName().equals(“Jacob”)){ 设置样式(“-fx背景色:黄色”); } } } }); 当UI决定需要更新项目时,会调用此方法。
item==null | | empty
table.setRowFactory(行->新表行(){
@凌驾
public void updateItem(个人项目,布尔值为空){
super.updateItem(项,空);
如果(项==null | |空){
}否则{
if(item.getFirstName().equals(“Jacob”)){
设置样式(“-fx背景色:黄色”);
}
}
}
});
当UI决定需要更新项目时,会调用此方法。empty
参数是UI告诉您单元格是否应为空的方式。请参阅该方法的javaDoc:
我们测试empty
条件,如果为true,则
将文本和图形属性设置为null。如果我们不这样做,
几乎可以保证最终用户将看到图形工件
意外地被关在牢房里
具体而言,empty
参数描述为:
@参数为空,无论此单元格是否表示列表中的数据。如果是
为空,则它不表示任何域数据,而是一个单元格
用于呈现“空”行
为什么我们不能仅仅依赖于组件创建者的实现决策,如果您需要确切了解,请尝试深入组件的源代码。
item==null
需要防止NullPointerException
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");
}
}
}
});