0

我需要根据列值在 TreeTable 中设置行的颜色。虽然我已经找到了这样一个问题的两个答案: javafx added color to row based on column value

Javafx:TableView 根据列值更改行颜色

,不幸的是我找不到如何在我的代码中实现它的方法?从下面的代码 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(){

    }
4

0 回答 0