如何分别为javafx TableView中的每一行设置颜色?

卢卡

我想根据该行中的单元格为每一行设置颜色。我尝试了很多解决方案,但似乎没有一个有效。我最终得到了这样的结果,但我无法更改此 lambda 表达式中 getCellObservableValue 的索引参数。

storageProductTableView.setRowFactory(param -> {
            LocalDate currentDate = LocalDate.now();
            TableRow<StorageProduct> row = new TableRow<>();
            String tempExpirationDate =  expirationDateColumn.getCellObservableValue(0).getValue();
            LocalDate expirationDate = LocalDate.parse(tempExpirationDate, DateTimeFormatter.ofPattern("yyyy-MM-d"));
            int difference = Period.between(currentDate,expirationDate).getDays();
            if(difference < 0){
                row.getStyleClass().add("expired-row");
            } else if(0 < difference && difference<=1){
                row.getStyleClass().add("red-row");
            } else if(1 < difference && difference <=3){
                row.getStyleClass().add("orange-row");
            } else if (3 < difference && difference <= 5) {
                row.getStyleClass().add("yellow-row");
            } else if (difference > 5) {
                row.getStyleClass().add("green-row");
            }

            return row;
    });
Menai Ala Eddine - 阿拉丁

基于 :

我想根据该行中的单元格为每一行设置颜色

和 fabian评论,你可以updateItem()通过使用来做到这一点callBack。我做了这个例子来满足你的需要:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package row;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.util.Callback;

/**
 *
 * @author Electron
 */
public class FXMLDocumentController implements Initializable {

    @FXML
    private TableView<Button> buttons;
    @FXML
    private TableColumn<Button, String> name;
    @FXML
    private TableColumn<Button, String> color;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        populate();
        styleRowColor();
    }

    private void styleRowColor() {
        Callback<TableColumn<Button, String>, TableCell<Button, String>> cellFactory
                = //
                new Callback<TableColumn<Button, String>, TableCell<Button, String>>() {
            @Override
            public TableCell<Button, String> call(final TableColumn<Button, String> param) {
                final TableCell<Button, String> cell = new TableCell<Button, String>() {

                    @Override
                    public void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setGraphic(null);
                            setText(null);
                        } else {
                            setText(item);
                            TableRow<Button> row = getTableRow();
                            if (row.getItem().getColor().equals("red")) {
                                row.getStyleClass().clear();
                                row.getStyleClass().add("red-row");
                            }
                            if (row.getItem().getColor().equals("orange")) {
                                row.getStyleClass().clear();
                                row.getStyleClass().add("orange-row");
                            }
                            if (row.getItem().getColor().equals("green")) {
                                row.getStyleClass().clear();
                                row.getStyleClass().add("green-row");
                            }
                            if (row.getItem().getColor().equals("yellow")) {
                                row.getStyleClass().clear();
                                row.getStyleClass().add("yellow-row");
                            }
                        }
                    }
                };
                return cell;
            }
        };
        color.setCellFactory(cellFactory);

    }

    private void populate() {
        name.setCellValueFactory(new PropertyValueFactory<>("name"));
        color.setCellValueFactory(new PropertyValueFactory<>("color"));

        Button button = new Button("btn1", "red");
        Button button2 = new Button("btn2", "green");
        Button button3 = new Button("btn3", "yellow");
        Button button4 = new Button("btn4", "orange");
        buttons.getItems().addAll(button, button2, button3, button4);
    }
}

结果是:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何分别为 Trackpoint、Trackpad 和 Mouse 设置 xbindkey?

来自分类Dev

如何分别为python3和python2设置不同的PYTHONPATH变量

来自分类Dev

Matplotlib注释/文本:如何分别为facecolor和edgecolor设置alpha透明度?

来自分类Dev

Spinner 问题:如何在 Spinner 中调用列表项并分别为每个项使用数学?

来自分类Dev

分别为正值和负值设置颜色和 alpha

来自分类Dev

如何根据自定义属性分别为具有相同类的所有元素设置背景颜色

来自分类Dev

JS Canvas分别为网格元素设置动画

来自分类Dev

分别为每个li添加一个孩子

来自分类Dev

如何分别为高dpi显示器和低dpi显示器设置缩放比例?

来自分类Dev

如何分别为高dpi显示器和低dpi显示器设置缩放比例?

来自分类Dev

如何在页面内添加一个正方形(宽度和高度分别为80%和彩色)?

来自分类Dev

分别为ToDo单元设置颜色,而不仅仅是改变一切

来自分类Dev

如何分别为散点图的点着色?

来自分类Dev

在MATLAB中分别为三个颜色通道创建直方图

来自分类Dev

将相同的ID应用于不同的对象并分别为其设置动画(jQuery)

来自分类Dev

Matlab-分别为x&y轴设置字体大小

来自分类Dev

使用 CSS 在单击事件上分别为每个变换属性设置动画

来自分类Dev

SQL-按列将两行分组,在不同的列上值分别为null

来自分类Dev

jQuery each()遍历列表项并分别为每个项做一些事情

来自分类Dev

我可以分别为WPF Bezier曲线控制点的X和Y坐标设置动画吗?

来自分类Dev

我可以分别为WPF Bezier曲线控制点的X和Y坐标设置动画吗?

来自分类Dev

如何在js中将每一行的背景颜色一一移走并从上一颜色中删除颜色

来自分类Dev

XPath-如何分别为每个结果运行CONCAT?

来自分类Dev

如何分别为每个div附加数据

来自分类Dev

如何在QML中仅更改TableView第一行的颜色?

来自分类Dev

如何在Alembic迁移中为每一行设置唯一值

来自分类Dev

如何在Alembic迁移中为每一行设置唯一值

来自分类Dev

如何将变量设置为等于for / f在txt文件中的每一行?

来自分类Dev

如何在PyTorch的张量的每一行中随机设置固定数量的元素

Related 相关文章

  1. 1

    如何分别为 Trackpoint、Trackpad 和 Mouse 设置 xbindkey?

  2. 2

    如何分别为python3和python2设置不同的PYTHONPATH变量

  3. 3

    Matplotlib注释/文本:如何分别为facecolor和edgecolor设置alpha透明度?

  4. 4

    Spinner 问题:如何在 Spinner 中调用列表项并分别为每个项使用数学?

  5. 5

    分别为正值和负值设置颜色和 alpha

  6. 6

    如何根据自定义属性分别为具有相同类的所有元素设置背景颜色

  7. 7

    JS Canvas分别为网格元素设置动画

  8. 8

    分别为每个li添加一个孩子

  9. 9

    如何分别为高dpi显示器和低dpi显示器设置缩放比例?

  10. 10

    如何分别为高dpi显示器和低dpi显示器设置缩放比例?

  11. 11

    如何在页面内添加一个正方形(宽度和高度分别为80%和彩色)?

  12. 12

    分别为ToDo单元设置颜色,而不仅仅是改变一切

  13. 13

    如何分别为散点图的点着色?

  14. 14

    在MATLAB中分别为三个颜色通道创建直方图

  15. 15

    将相同的ID应用于不同的对象并分别为其设置动画(jQuery)

  16. 16

    Matlab-分别为x&y轴设置字体大小

  17. 17

    使用 CSS 在单击事件上分别为每个变换属性设置动画

  18. 18

    SQL-按列将两行分组,在不同的列上值分别为null

  19. 19

    jQuery each()遍历列表项并分别为每个项做一些事情

  20. 20

    我可以分别为WPF Bezier曲线控制点的X和Y坐标设置动画吗?

  21. 21

    我可以分别为WPF Bezier曲线控制点的X和Y坐标设置动画吗?

  22. 22

    如何在js中将每一行的背景颜色一一移走并从上一颜色中删除颜色

  23. 23

    XPath-如何分别为每个结果运行CONCAT?

  24. 24

    如何分别为每个div附加数据

  25. 25

    如何在QML中仅更改TableView第一行的颜色?

  26. 26

    如何在Alembic迁移中为每一行设置唯一值

  27. 27

    如何在Alembic迁移中为每一行设置唯一值

  28. 28

    如何将变量设置为等于for / f在txt文件中的每一行?

  29. 29

    如何在PyTorch的张量的每一行中随机设置固定数量的元素

热门标签

归档