<AI>
setCellFactory の内部でセルの古い値(old)と新しい値(new)の比較を行うには、
セルの itemProperty() または対象となるモデルデータのプロパティに ChangeListener を追加します。
以下に代表的な実装例を示します。
1. セルの item の変更を監視する例
セルの状態変化(古いアイテムから新しいアイテムへの切り替わり)を判定するには、itemProperty() を利用します。
java
cell.itemProperty().addListener((obs, oldValue, newValue) -> {
if (newValue != null && !newValue.equals(oldValue)) {
// 値が変更された際の処理(例:スタイルの変更など)
System.out.println("値が変わりました: " + oldValue + " -> " + newValue);
}
});
2. セルの編集処理(OnEditCommit)で比較する例
編集時に入力された値と元の値を比較したい場合は、カラムの setOnEditCommit イベントを利用します。
java
column.setOnEditCommit(event -> {
String oldValue = event.getOldValue();
String newValue = event.getNewValue();
if (newValue != null && !newValue.equals(oldValue)) {
// 値が変更された際の処理
}
});
セル描画時の動的な判定には itemProperty、編集時の確定処理には OnEditCommit イベントが適しています