我需要根据列值在 TreeTable 中设置行的颜色。虽然我已经找到了这样一个问题的两个答案: javafx added color to row based on column value
,不幸的是我找不到如何在我的代码中实现它的方法?从下面的代码 TreeTable 可以正常工作。假设我现在要单击“检查人员”按钮并使用 2 个条件更新 TreeTable: 1 - 标记绿色行,其中经理名称为“John”
2 - 标记缺勤天数 > 4 的黄色行
有人可以在我的代码中解释如何做到这一点吗?
public void showStaffInTreeTable(){
ArrayList<Employee> johnStaff = new ArrayList<>(Arrays.asList(new Employee("1", "secretary", "1"),
new Employee("2", "cleaner", "2")));
ArrayList<Employee> amandaStaff = new ArrayList<>(Arrays.asList(new Employee("3", "driver", "0"),
new Employee("4", "mechanic", "5")));
ArrayList<Manager> allStaff = new ArrayList<>(Arrays.asList(new Manager("John", johnStaff),
new Manager("Amanda", amandaStaff)));
TreeTableColumn<Staff_DTO, String> columnManager = new TreeTableColumn<>("Manager");
TreeTableColumn<Staff_DTO, String> columnStaffId = new TreeTableColumn<>("Id");
TreeTableColumn<Staff_DTO, String> columnStaffWorkplace = new TreeTableColumn<>("Workplace");
TreeTableColumn<Staff_DTO, String> columnStaffAbsence = new TreeTableColumn<>("Days Absence");
columnManager.setCellValueFactory(new TreeItemPropertyValueFactory<>("managersName"));
columnStaffId.setCellValueFactory(new TreeItemPropertyValueFactory<>("id"));
columnStaffWorkplace.setCellValueFactory(new TreeItemPropertyValueFactory<>("workplace"));
columnStaffAbsence.setCellValueFactory(new TreeItemPropertyValueFactory<>("daysAbsence"));
treeTableStaff.getColumns().addAll(columnManager, columnStaffId, columnStaffWorkplace, columnStaffAbsence);
TreeItem root = new TreeItem(new Staff_DTO("", "","",""));
for (Manager manager: allStaff){
TreeItem managerItem = new TreeItem(new Staff_DTO(manager.getManagersName(), "","",""));
for (Employee employee: manager.getManagersStaff()){
managerItem.getChildren().add(new TreeItem<>(new Staff_DTO("",employee.getId(), employee.getWorkplace(), employee.getDaysAbsence())));
}
root.getChildren().add(managerItem);
}
treeTableStaff.setRoot(root);
anchorPaneTreeTableStaff.getChildren().add(treeTableStaff);
}
public void buttonCheckStaff(){
}

