2017-06-18 16 views
0

私はJavaFXで作業する方法を理解しようとしていますが、異なる色でtableViewの異なる行を色付けする方法については苦労しています。TableViewの行を色付けするにはどうすればいいですか?

ラジオボタンによって異なるデータを取得するテーブルビューのシーンがあります。 1つのオプションは、色のないデータを表示し、他の色は、その数の大きさに応じて表示されます。

欠陥のある方法:

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部分はスキップされます。 私が間違っていることは何ですか?

+0

のスタイルを設定する必要があります(少なくとも)セルがInteger.parseInt(s)を実行しようとする前に空でないことを確認してください(そうしないと、null値を解析しようとします)。それでも動作しない場合は、MyClassのコードを投稿する必要があります。 –

+0

ありがとうございました。 –

答えて

1

問題あなたはsettextfill() を使用していたされる代わりに、あなたは間違いなくあなたの `updateItem`方法で` `のsetText(複数可)を逃している、とあなたが必要とする背景

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); 
} 
関連する問題