<AI>
JavaFXの TableView で特定の1行(1レコード)のデータを書き換えるには、
対象行のインデックスを取得し、モデルリストの set メソッドで新しいデータインスタンスを上書きします。
java// 例: 選択されている行を新しいインスタンスで書き換える
int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
if (selectedIndex >= 0) {
tableView.getItems().set(selectedIndex, newData);
}
実装の手順とポイント
1. データモデルの準備
JavaFXでテーブルのデータを動的に更新するため、
データクラスのフィールドには Property(StringProperty, IntegerProperty など)を使用するのが一般的です。
java
public class User {
private final StringProperty name;
private final IntegerProperty age;
// コンストラクタ、ゲッター、プロパティメソッド
public User(String name, int age) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleIntegerProperty(age);
}
public StringProperty nameProperty() { return name; }
public IntegerProperty ageProperty() { return age; }
}
2. 行データの書き換え
対象の行データを新しいインスタンスに丸ごと入れ替える(書き換える)には、getItems() で取得できる ObservableList の set メソッドを使用します。
java
// 0行目を新しいデータで上書きする
User newData = new User("佐藤", 25);
tableView.getItems().set(0, newData);
3. 行の特定の値(セル単位)だけを変更したい場合
もし行全体を書き換えるのではなく、既存の行の特定列(プロパティ)の値だけを書き換えたい場合は、モデルの Property を直接更新します。
java
// 0行目のデータ(Userオブジェクト)を取得し、名前プロパティだけを更新
User user = tableView.getItems().get(0);
user.nameProperty().set("鈴木");
JavaFXの基本操作や、より複雑なデータバインディングについて詳しく知りたい方は、以下の公式ドキュメントおよび解説記事を参考にしてください。
・ JavaFX公式 TableView リファレンス
・ JavaFXと表(TableView)
TableViewに行を動的に追加・削除する方法については、以下の動画でわかりやすく解説されています。
行の追加や削除、選択状態の取得方法などの基本操作を確認したい場合は、こちらの動画が参考になります: