3

学校の課題で、JavaFX の ObservableList オブジェクトを使用しています (そうですか?)。私はこれに1日以上取り組んでいますが、理解できません。先生は「ググって」としか言わないのでそれも仕方ない..

基本的に、私たちは人々とその家族を追跡するための基本的な管理アプリケーションに取り組んでいます。人々は家族の一員であり、家族は複数のメンバーを持つことができます。

個人または家族が追加されると、observableList に追加され、ArrayList (データをシリアル化できるようにするため) と GUI 要素が更新されますここが問題です。

現在、次の実装があります。

private List<Persoon> personen;
private List<Gezin> gezinnen;
this.personen = new ArrayList<Persoon>();
this.gezinnen = new ArrayList<Gezin>();

private transient ObservableList<Persoon> observablePersonen;
private transient ObservableList<Gezin> observableGezinnen;
observablePersonen = FXCollections.observableArrayList(personen);
observableGezinnen = FXCollections.observableArrayList(gezinnen);

次に、アイテムが追加されると、次の処理が行われます。

Persoon p = new Persoon();
observablePersonen.add(p);
observablePersonen.notifyAll();

この後、「personen」リストを調べると、追加されたオブジェクトはありません:(

明らかな何かが欠けていますか?

4

3 に答える 3

0

ArrayListを に同期する方法のサンプルObservableList

public class Main {

    public static ArrayList<Double> arrayList = new ArrayList();
    public static ObservableList<Double> observableList = FXCollections.observableArrayList();

    public static void main(String[] args) {

        // add a listener to the ObservableList
        observableList.addListener(new ListChangeListener<Double>() {
            @Override
            public void onChanged(Change<? extends Double> c) {
                // c represents the changed element
                System.out.println("Added " + c + " to the Observablelist");
                // we add the last element added to the observable list to the arraylist
                arrayList.add(observableList.get(observableList.size()-1));
                System.out.println("Added " + arrayList.get(arrayList.size()-1) + " to the Arraylist");
            }
        });

        observableList.add(5.0);
        observableList.add(7.0);
    }
}

出力:

Added { [5.0] added at 0 } to the Observablelist
Added 5.0 to the Arraylist
Added { [7.0] added at 1 } to the Observablelist
Added 7.0 to the Arraylist
于 2015-10-02T13:21:34.517 に答える