java - 获取具有某些条件的 tableView 项目的特定行(JavaFX)

标签 java uitableview javafx row

我正在为一个人制作出勤 TableView 。我正在获取 tableView 行,如果该特定日期的人状态为“存在”(字符串),那么我想更改该特定行并将其背景颜色更改为绿色。

然后,如果他在那特定天“缺席”,我想更改该行并设置红色背景。

否则,如果行中没有日期和状态,我需要再次更改行并设置白色背景。

问题:它正在执行第一个 if 语句,然后将每一行设置为绿色,因为第一个语句为“true”。

我只想获取包含当前内容的行,并将该行设置为绿色背景颜色。

*getStatus 返回字符串

studentTable.setRowFactory(tableView -> {
    final TableRow<Attendance> row = new TableRow<>();

        for (Attendance item : studentTable.getItems()) {
            if (item.getStatus().equals("present")) {
                row.setStyle("-fx-background-color:green;");
            }
            else if (item.getStatus().equals("absent")){
                row.setStyle("-fx-background-color:red;");
            }
            else {
                row.setStyle("-fx-background-color:white;");
            }
        }
return row;
    });
}

结果图片:Image

我将感谢任何解决方案和任何帮助:)

最佳答案

您的代码所做的就是在需要时创建一个 TableRow,然后每次创建 TableRow 时,它都会迭代所有项目在表格中,不断更改单行的样式。因此,该行的样式将由表的项目列表中的最后一项确定(因为该项目决定对 setStyle(...) 的最终调用)。当然,您对创建的每一行都执行此操作,因此毫不奇怪,每一行都具有相同的样式。

首次使用该行显示 Attendance 实例时,会调用 TableRowupdateItem(...) 方法,并且每当重复使用该行来显示不同的Attendance实例时,都会再次出现。因此,您需要重写 updateItem() 并将逻辑放在那里。

studentTable.setRowFactory(tableView -> new TableRow<Attendance>() {
    @Override
    protected void updateItem(Attendance attendance, boolean empty) {
        super.updateItem(attendance, empty);
        if (empty) {
            setStyle("");
        } else if (attendance.getStatus().equals("present")) {
            setStyle("-fx-background-color:green;");
        } else if (attendance.getStatus().equals("absent")) {
            setStyle("-fx-background-color:red;");
        } else {
            setStyle("-fx-background-color:white;");
        }
    }
});

关于java - 获取具有某些条件的 tableView 项目的特定行(JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49438854/

相关文章:

java - RCaller 抛出 java.io.IOException/ExecutionException

java - 我应该使用哪个字符集来解码java中的这个字节数组?

java - 核心计数任务 CompletableFuture 比 parallelStream 慢

iphone - 使用不同类型的 UITableViewCell 的 UITableView 最佳实践

ios - 在 UITableView 之外显示单元格

java - 带有 2 个图标的自定义标签?

java - 在java中通过https验证/打开文件

ios - 可滚动的 UITableView 在 Swift 中向上滑动到屏幕顶部

css - TornadoFX:类型安全的 CSS 与其他库

java - 如何使用 javafx 在 Gluon 移动应用程序中切换 View ?