これはシナリオです:
「Koe」オブジェクトで満たされた listView があります。listView では、「Koe」オブジェクトは LabID プロパティによってリストされます。
public class Koe {
private final SimpleIntegerProperty koeID = new SimpleIntegerProperty();
private final SimpleStringProperty labID = new SimpleStringProperty("");
...
//GETTERS
public int getKoeID(){
return koeID.get();
}
public String getLabID(){
return labID.get();
}
...
//SETTERS
public void setKoeID(int iKoeID) {
koeID.set(iKoeID);
}
public void setLabID(String sLabID){
labID.set(sLabID);
}
...
@Override
public String toString(){
return "" + labID.get();
}
これで、Koe が選択されると、Koe のデータが別のペインに読み込まれ、ユーザーはそれを編集して [保存] ボタンを押すことができます。[保存] ボタンを押すと、TextField の値が Koe オブジェクトに保存されます。
...
k.setLabID(txtLabID.getText());
...
ただし、問題は、ユーザーが Koe オブジェクトの LabID を編集した場合、ListView が更新されるまで ListView に新しい LabID が表示されないことです (テストとして、ユーザーが [保存] ボタンを押したときにダミーの Koe オブジェクトを追加してみました)。強制的に更新すると、うまくいくように見えました)。
私はそれについていくつか読んで、ListView を SimpleStringProperty オブジェクトにリンクする必要があることを理解しています。しかし、ユーザーが保存ボタンを押すと、setLabID() メソッドが Koe の LabID (SimpleStringProperty オブジェクト) を更新するのでしょうか? これは toString() メソッドと関係がありますか? これは、listView で Koe の labID を表示するために使用されているためですか? しかし、この toString() メソッドは labID SimpleStringProperty? にリンクされています。
ご覧のとおり、私は少し混乱しています。すべてが機能しますが、まだ解決できていないのは ListView の更新に関する問題です。