2017-11-22 16 views
1

カラム6の文字列「N」を持つ行の色を変更する必要があります。ObservableListではなく多くの例を見てきました。TableView ObservableListの行のスタイルを変更する

'FOR'では、テーブルのサイズと 'IF'を制御して、カラム6の文字 'N'を含むすべての行が行全体の色を変更することを確認します。

@FXML private TableView<ObservableList> table; 

     for(int i = 0; i< table.getItems().size(); i++){ 
          if(table.getItems().get(i).get(6).toString().equalsIgnoreCase("N")){ 
           //table.get.get(i).setStyle("-fx-background-color: yellow"); //NOT FOUND 
          } 
     } 
+1

あなたは生タイプを使用しないでください:あなたは 'テーブルビュー>'ではなく 'テーブルビュー'が必要です。 –

答えて

2

テーブル上の行の工場を使用します。

public class MyControllerClass { 

    @FXML 
    private TableView<ObservableList<Object>> table ; // TODO: use a more appropriate type than Object 

    public void initialize() { 
     table.setRowFactory(tv -> new TableRow<ObservableList<Object>>() { 
      @Override 
      protected void updateItem(ObservableList<Object> row, boolean empty) { 
       super.updateItem(row, empty); 
       if (row != null && row.get(6).toString().equalsIgnoreCase("N")) { 
        setStyle("-fx-background-color: yellow;"); 
       } else { 
        setStyle(""); 
       } 
      } 
     }); 
    } 

    // ... 
} 
+0

私は非常によくオーバーロードされたメソッドを理解していない、どこにテーブルに影響を与えるメソッドを配置する必要がありますか?ありがとう!! – Arkhan6

+0

@ Arkhan6私はその質問を理解していません。あなたは、コントローラの 'initialize()'メソッドで行のファクトリを設定しました。 –

+0

私はinitialize()でコードを入力しました。正しく動作しました。ありがとうございます! – Arkhan6

関連する問題