java - 如何为 TableView 的一行着色?

标签 java javafx colors tableview cell

我试图了解如何使用 JavaFX,但很难理解如何用不同的颜色为 tableView 的不同行着色。

我有一个带有表格 View 的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,其他颜色行取决于数字有多大。

有缺陷的方法:

private void drawTableColor(){

    //tableColumns[0] = new TableColumn("Spieltag");

    //tableColumns[0].setCellValueFactory(new PropertyValueFactory<MyClass, String>("day"));

    /*tableColumns[0].setCellFactory(column -> {
        return new TableCell<MyClass,String>(){
            @Override
            protected void updateItem(String s, boolean empty){
                super.updateItem(s, empty);

                int i = Integer.parseInt(s);
                System.out.println("TEST " +i);
                if (i<=3){
                    setTextFill(Color.BLUE);
                } else if (i==4){
                    setTextFill(Color.AZURE);
                } else if (i <= 6){
                    setTextFill(Color.GREEN);
                } else if (i == 16){
                    setTextFill(Color.ORANGE);
                } else if (i>16){
                    setTextFill(Color.RED);
                }
            }

        };
    });*/

    ObservableList<MyClass> data2 = FXCollections.observableArrayList(data);
    tableView.setItems(null);
    tableView.setItems(data2);
}

注释掉的部分给我带来了麻烦。它不会为该行着色,也不会在该列中显示任何内容。如果第一行被注释,它将跳过 updateItem 部分。 知道我做错了什么吗?

最佳答案

问题是您正在使用 settextfill() 相反,您应该设置背景的样式

private void drawTableColor(){

    //tableColumns[0] = new TableColumn("Spieltag");

    //tableColumns[0].setCellValueFactory(new PropertyValueFactory<MyClass, String>("day"));

    /*tableColumns[0].setCellFactory(column -> {
        return new TableCell<MyClass,String>(){
            @Override
            protected void updateItem(String s, boolean empty){
                super.updateItem(s, empty);

                int i = Integer.parseInt(s);
                System.out.println("TEST " +i);
                if (i<=3){
                    setStyle("-fx-background-color: blue");
                } else if (i==4){
                    setStyle("-fx-background-color: azure");
                } else if (i <= 6){
                    setStyle("-fx-background-color: green");
                } else if (i == 16){
                    setStyle("-fx-background-color: orange");
                } else if (i>16){
                    setStyle("-fx-background-color: red");
                }
            }

        };
    });*/

    ObservableList<MyClass> data2 = FXCollections.observableArrayList(data);
    tableView.setItems(null);
    tableView.setItems(data2);
}

关于java - 如何为 TableView 的一行着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620377/

相关文章:

java - 无法导入 Spark 包

java - 在与正则表达式匹配的字符串中查找一些文本

java - 从相应的列标题节点获取 javafx TableColumn

html - 十六进制颜色在 Mac 上的 Chrome 和 Safari 之间显示不同

colors - MathJax 和 LaTeX\definecolor

java - Math.abs()报错: cannot find symbol

java - 无法访问属性的默认字段

SE7 或 SE8 的 Java FX

java - 通过 javafx 设置 m3u8 播放列表的播放器

python - Matplotlib pandas plot_date 颜色类别