表视图中的JavaFX行未删除元素
我对表视图有问题。当我从可观察列表中删除元素时,该元素上对应的行不会被删除 我有一个关系列表person1,type,person2=>children 当我添加一个新的子项时,相关关系被创建为null、neutral、null=>child 添加一些人后,我会更改他们之间的关系,因此,当我指示兄弟姐妹时,一些不动产会被删除。但它仍然在表视图中可见。它是不可选择的,但当我点击时,它是indique。列表中的最后一个关系 添加新人员时,该行将被覆盖表视图中的JavaFX行未删除元素,javafx,Javafx,我对表视图有问题。当我从可观察列表中删除元素时,该元素上对应的行不会被删除 我有一个关系列表person1,type,person2=>children 当我添加一个新的子项时,相关关系被创建为null、neutral、null=>child 添加一些人后,我会更改他们之间的关系,因此,当我指示兄弟姐妹时,一些不动产会被删除。但它仍然在表视图中可见。它是不可选择的,但当我点击时,它是indique。列表中的最后一个关系 添加新人员时,该行将被覆盖 this.relationSimLeftColu
this.relationSimLeftColumn.setCellValueFactory(cellData -> cellData.getValue().simLeftProperty());
this.relationSimRightColumn.setCellValueFactory(cellData -> cellData.getValue().simRightProperty());
this.relationTypeColumn.setCellValueFactory(cellData -> cellData.getValue().typeProperty());
和细胞工厂:
private Callback<TableColumn<GTX_Relation, GTX_Member>,
TableCell<GTX_Relation, GTX_Member>> setMemberCellFactory(String parameter) {
Callback<TableColumn<GTX_Relation, GTX_Member>, TableCell<GTX_Relation, GTX_Member>> callback =
new Callback<TableColumn<GTX_Relation, GTX_Member>, TableCell<GTX_Relation, GTX_Member>>() {
@Override
public TableCell<GTX_Relation, GTX_Member> call(TableColumn<GTX_Relation, GTX_Member> param) {
TableCell<GTX_Relation, GTX_Member> cell = new TableCell<GTX_Relation, GTX_Member>() {
@Override
protected void updateItem(GTX_Member item, boolean empty) {
super.updateItem(item, empty);
ImageView imageview = new ImageView();
if (item != null) {
imageview.setFitHeight(TABLE_IMAGE_MEMBER_HEIGHT);
imageview.setFitWidth(TABLE_IMAGE_MEMBER_WIDTH);
imageview.setImage(new Image(item.getPhoto()));
setGraphic(imageview);
} else {
if (!empty) {
imageview.setFitHeight(TABLE_IMAGE_MEMBER_HEIGHT);
imageview.setFitWidth(TABLE_IMAGE_MEMBER_WIDTH);
String path = parameter.equals("LEFT") == true ?
ImageFiles.NO_NAME_FEMALE.toString() : ImageFiles.NO_NAME_MALE.toString();
imageview.setImage(new Image(path));
setGraphic(imageview);
}
}
}
};
return cell;
}
};
return callback;
}
您的电池工厂需要处理电池为空的情况 从表的项目列表中删除项目时,以前用于显示项目的单元格可能会被重新用作空单元格;i、 e.将调用其updateItemnull、true方法。对于item==null&&empty==true的情况,您当前的实现没有做任何事情,因此单元格的外观不会改变 你需要
@Override
protected void updateItem(GTX_Member item, boolean empty) {
super.updateItem(item, empty);
ImageView imageview = new ImageView();
if (item != null) {
imageview.setFitHeight(TABLE_IMAGE_MEMBER_HEIGHT);
imageview.setFitWidth(TABLE_IMAGE_MEMBER_WIDTH);
imageview.setImage(new Image(item.getPhoto()));
setGraphic(imageview);
} else {
if (empty) {
setGraphic(null);
} else {
imageview.setFitHeight(TABLE_IMAGE_MEMBER_HEIGHT);
imageview.setFitWidth(TABLE_IMAGE_MEMBER_WIDTH);
String path = parameter.equals("LEFT") == true ?
ImageFiles.NO_NAME_FEMALE.toString() : ImageFiles.NO_NAME_MALE.toString();
imageview.setImage(new Image(path));
setGraphic(imageview);
}
}
}