私の質問を説明するために、JavaFXコードの簡単な部分を次に示します。
List list1 = new ArrayList();
list1.add("foo");
...
someListView = new ListView<>();
ObservableList someObservableList = FXCollections.observableList(list1);
someListView.setItems(someObservableList);
...
someObservableList.add("bar");
私が正しく理解していれば、setItems
メソッドを呼び出した後、リストの内容がGuiコンポーネントに表示されるだけでなく、その後インスタンスにListView
アイテムが追加された場合、は自動的に更新され、新しく追加されたアイテムが自動的に表示されます.追加のメソッドやメソッドを呼び出す必要はありません。ObservableList
ListView
add
refresh
ここまでは順調ですね。しかし、元のリスト (つまり ) に何かを追加するとどうなるでしょうかlist1
。これらの変更は自動的に反映されません。それは完全に理にかなっていますが、時には不便です。
もちろん、従来の Java アプリケーションでは、アプリケーションの Model はObservableCollection
インスタンスで構成されていません。そのため、モデルに何かを追加するたびにObservableLists
、元のリストから派生したインスタンスを常に更新する必要があります。どうやらこれは必然ですよね?
これは私が疑問に思ったのですが、Model クラスのタイプの出現 (例えば、、、、...) を変更し、今後それらを代替に置き換えるのは賢明なCollection
アイデアList
でしょCollection
うか? Set
Iterable
ObservableCollection
今までは、これらのObservableCollection
クラスはアプリケーションの GUI レイヤーでのみ使用されると考えていましたが、どこでも使用できると非常に便利なようです。