2

これはシナリオです:

「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 の更新に関する問題です。

4

0 に答える 0