【发布时间】:2020-12-17 21:38:19
【问题描述】:
todoitemsListview.setCellFactory(new Callback<ListView<ToDoItems>, ListCell<ToDoItems>>() {
@Override
public ListCell<ToDoItems> call(ListView<ToDoItems> toDoItemsListView) {
ListCell<ToDoItems> cell= new ListCell<ToDoItems>(){
@Override
protected void updateItem(ToDoItems items, boolean empty) {
super.updateItem(items, empty);
if(empty){
setText(null);
}else {
setText(items.getItemName());
if (items.getDeadline().equals(LocalDate.now())){
System.out.println(items.getDeadline().toString());
System.out.println(items.getItemName());
setTextFill(Color.RED);
}else if (items.getDeadline().equals(LocalDate.now().plusDays(1))){
System.out.println(items.getDeadline().toString());
System.out.println(items.getItemName());
setTextFill(Color.BLUE);
}else if (items.getDeadline().equals(LocalDate.now().plusDays(2))){
System.out.println(items.getDeadline().toString());
System.out.println(items.getItemName());
setTextFill(Color.GREEN);
}else if(items.getDeadline().isBefore(LocalDate.now())){
System.out.println(items.getDeadline().toString());
System.out.println(items.getItemName());
setTextFill(Color.GREY);
}
}
}
};
return cell;
}
});
我在 listview 中使用了 cellfactory 来根据到期日期将文本颜色设置为不同的值。但是当我向列表中添加新项目时,不满足 if - else 条件的项目也会突出显示。
这是基于 ObservabelList 的基本 ToDo 应用程序的一部分,其中 ToDoItems 类具有三个属性,itemName、ItemDesription、Deadline。
【问题讨论】:
-
错误在您的代码中。您需要在所有条件下将文本设置为完整,包括空单元格和截止日期超过四天的单元格。
标签: java user-interface javafx