我有TableView<TypeReport> tv
和列
tc_name.setCellValueFactory(new PropertyValueFactory<>("name"));
如果tc_name
的单元格中的日期不以" "
开头,我希望行为粗体。
我用:
tv.setRowFactory(new Callback<TableView<TypeReport>, TableRow<TypeReport>>() {
@Override
public TableRow<TypeReport> call(TableView<TypeReport> param) {
return new TableRow<TypeReport>() {
@Override
protected void updateItem(TypeReport item, boolean empty) {
if (item==null) {
setStyle("");
} else {
String res=item.getName();
if (res.startsWith(" ")){}
else
setStyle("-fx-font-weight: bold");
}
}
};
}
});
当我打开应用程序时,所需的行是粗体,但是当我滚动时,一些不同的行是粗体。
答案 0 :(得分:2)
您需要删除项目名称以" "
开头的行的样式。 (注意,您还需要致电super.updateItem(...)
):
@Override
protected void updateItem(TypeReport item, boolean empty) {
super.updateItem(item, empty);
if (item==null) {
setStyle("");
} else {
String res=item.getName();
if (res.startsWith(" ")) {
setStyle("");
} else
setStyle("-fx-font-weight: bold");
}
}
或等效(但代码较少):
@Override
protected void updateItem(TypeReport item, boolean empty) {
super.updateItem(item, empty);
if (item==null || item.getName().startsWith(" ")) {
setStyle("");
} else {
setStyle("-fx-font-weight: bold");
}
}