<AI>
JavaFXの TableView で特定の1行のデータを書き換える(再描画する)方法と、特定のカラム(セル)の文字色を変更する方法について解説します。

1. 1行単位のデータを書き換える方法
データを保持するモデルクラス(エンティティ)のプロパティに Property クラス(StringProperty, IntegerProperty など)
を使用している場合、値を set() するだけで TableView に自動反映されます。

java
// 例:モデルクラスが name, age をプロパティで持っている場合
MyData rowData = tableView.getItems().get(targetIndex);
rowData.getNameProperty().set("新しい名前"); // 自動的にTableViewが更新される
rowData.getAgeProperty().set(30);

※注意: 文字列(String)などの通常のオブジェクト型を直接代入している場合
set を呼び出しても変更が検知されません。該当行のデータを ObservableList から一度取り出して置き換える必要があります。

java
MyData newData = new MyData("新しい名前", 30);
tableView.getItems().set(targetIndex, newData);

2. カラムの文字色を変更する方法
カラム(セル)の文字色を変更するには、対象の TableColumn に setCellFactory を設定し、
updateItem メソッド内で条件に合わせて setTextFill() を呼び出します。

以下のサンプルは「年齢(age)が20歳未満なら文字色を赤、それ以外は黒」にする例です。

java
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.paint.Color;

TableColumn ageColumn = new TableColumn<>("年齢");

ageColumn.setCellFactory(column -> {
    return new TableCell() {
        @Override
        protected void updateItem(Integer age, boolean empty) {
            super.updateItem(age, empty);

            if (empty || age == null) {
                setText(null);
                setTextFill(Color.BLACK); // 空行時のリセット
            } else {
                setText(String.valueOf(age));
                
                // 1行単位の条件分岐:20歳未満なら赤文字にする
                if (age < 20) {
                    setTextFill(Color.RED);
                } else {
                    setTextFill(Color.BLACK);
                }
            }
        }
    };
});

さらに詳しい情報
セルの高度なカスタマイズやCSS適用の詳細については、
PragmaticCodingのTableViewスタイリングガイド が役立ちます。

また、文字色の変更に関するコミュニティでの議論は 
Stack Overflow - JavaFX TableViewの文字色変更に関するスレッド でも確認できます。