<AI>
JavaFXのTableViewでカラムの値に応じて文字色(テキストカラー)を変更するには、
対象のTableColumnに対して setCellFactory を設定し、updateItem() メソッドをオーバーライドします。

具体的な実装手順とサンプルコードを以下に示します。

実装手順
1. setCellFactory を使ってカスタムな TableCell を生成します。
2. updateItem(item, empty) メソッドをオーバーライドします。
3. 値(item)や行のデータ(getTableRow().getItem())を判定し、
条件に一致する場合は setTextFill() メソッドで文字色を変更します。

サンプルコード(値が "完了" の場合は文字色を青にする例)

java
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class TableViewColorSample extends Application {

    // データモデルクラス
    public static class Task {
        private final SimpleStringProperty name;
        private final SimpleStringProperty status;

        public Task(String name, String status) {
            this.name = new SimpleStringProperty(name);
            this.status = new SimpleStringProperty(status);
        }

        public String getStatus() {
            return status.get();
        }
        public String getName() {
            return name.get();
        }
    }

    @Override
    public void start(Stage primaryStage) {
        TableView<Task> table = new TableView<>();
        ObservableList<Task> data = FXCollections.observableArrayList(
            new Task("タスクA", "進行中"),
            new Task("タスクB", "完了"),
            new Task("タスクC", "未着手")
        );

        // カラムの作成
        TableColumn<Task, String> nameCol = new TableColumn<>("タスク名");
        nameCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getName()));

        TableColumn<Task, String> statusCol = new TableColumn<>("ステータス");
        statusCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStatus()));

        // ★文字色を変更する処理(CellFactoryの設定)
        statusCol.setCellFactory(column -> {
            return new javafx.scene.control.TableCell<Task, String>() {
                @Override
                protected void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty);

                    if (empty || item == null) {
                        setText(null);
                        setGraphic(null);
                        setTextFill(Color.BLACK); // デフォルト色
                    } else {
                        setText(item);

                        // 値が「完了」の場合は文字色を青色に変更
                        if (item.equals("完了")) {
                            setTextFill(Color.BLUE);
                        } else {
                            setTextFill(Color.BLACK);
                        }
                    }
                }
            };
        });

        table.getColumns().addAll(nameCol, statusCol);
        table.setItems(data);

        Scene scene = new Scene(table, 300, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ポイント
・ empty または item が null の場合の処理を必ず記述してください(スクロール時に前のセルの色が引き継がれてしまう不具合を防ぐため)。
・ 文字色の変更は -fx-text-fill プロパティ(またはCSS)を使って行うことも可能です。
・ 選択行(ハイライト)が見えにくくなるのを防ぐため、選択中(isSelected())かどうかを条件に含めることも一般的です。

詳細なJavaDocや公式のカスタマイズガイドについては、
Cell API ドキュメント(Oracle) または UIコントロールのカスタマイズ(Oracle) をご参照ください。