Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为TableView的一行着色?_Java_Javafx_Colors_Tableview_Cell - Fatal编程技术网

Java 如何为TableView的一行着色?

Java 如何为TableView的一行着色?,java,javafx,colors,tableview,cell,Java,Javafx,Colors,Tableview,Cell,我试图理解如何使用JavaFX,但很难理解如何用不同的颜色为tableView的不同行着色 我有一个带有tableview的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,另一个选项根据数字的大小为行添加颜色 有缺陷的方法: private void drawTableColor(){ //tableColumns[0] = new TableColumn("Spieltag"); //tableColumns[0].setCellValueFactory(n

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

我有一个带有tableview的场景,它根据单选按钮获取不同的数据。一个选项显示不带颜色的数据,另一个选项根据数字的大小为行添加颜色

有缺陷的方法:

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);
}
private void drawTableColor(){
//tableColumns[0]=新的TableColumn(“Spieltag”);
//tableColumns[0].setCellValueFactory(新属性值工厂(“日”);
/*tableColumns[0]。setCellFactory(列->{
返回新的TableCell(){
@凌驾
受保护的void updateItem(字符串s,布尔值为空){
super.updateItem(s,空);
int i=整数.parseInt(s);
系统输出打印项次(“测试”+i);

如果(i问题是您使用的是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);
}
private void drawTableColor(){
//tableColumns[0]=新的TableColumn(“Spieltag”);
//tableColumns[0].setCellValueFactory(新属性值工厂(“日”);
/*tableColumns[0]。setCellFactory(列->{
返回新的TableCell(){
@凌驾
受保护的void updateItem(字符串s,布尔值为空){
super.updateItem(s,空);
int i=整数.parseInt(s);
系统输出打印项次(“测试”+i);

如果(i)在
updateItem
方法中确实缺少
setText
,并且在尝试执行
Integer.parseInt
之前,您需要(至少)检查单元格是否为空(否则您将尝试解析空值)。如果这仍然不起作用,您需要发布
MyClass
的代码。谢谢,这有助于我填写该列。