JavaFX 8でChoiceBox
を必要とするCollection
を作成しようとしています。 Collection
の作成方法がわかりませんが...試した場合:
ObservableList<String> list = new ObservableList<String>();
抽象的であるため、ObservableList
をインスタンス化できないというエラーが表示されます。分かりやすい。 ObservableList
のドキュメントを見ると、SortedList implements ObservableList
、しかし私はできません:
ObservableList<String> list = new SortedList<String>();
該当するコンストラクターがないため。どうやらObservableList
に渡すSortedList
が必要なようですが、ObservableList
を作成できないので奇妙です。
constructor SortedList.SortedList(ObservableList<? extends String>,Comparator<? super String>) is not applicable
(actual and formal argument lists differ in length)
constructor SortedList.SortedList(ObservableList<? extends String>) is not applicable
(actual and formal argument lists differ in length)
私はそれを解読する方法がわかりません。私が試してみると
ObservableList<String> list = new SortedList<SortedList<String>>();
//or
ObservableList<String> list = new SortedList<ObservableList<String>>();
絶望から、さらに複雑なエラーが発生します。
SortedList<String> list = new SortedList<String>();
動作しません。どういうわけかこれは動作します(ただし、明らかに安全でない操作を使用します):
ChoiceBox box = new ChoiceBox(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));
だから私は試しました:
ObservableList<string> list = new FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip");
しかし、そこには運もありません。私は非常に混乱しており、これを理解しようとする無限のループで何度も同じ考えをしています。私が見つけたドキュメントには、役に立たない例や例が示されていません。公式文書も役に立たない:
たとえば、コレクションcがあり、リスト、セット、または別の種類のコレクションであるとします。このイディオムは、新しいArrayList(Listインターフェイスの実装)を作成します。最初はcのすべての要素が含まれています。
List<String> list = new ArrayList<String>(c);
ArrayList
の実装であるList
を作成するには、List
が必要です。最初にドキュメントに行った理由は、彼らが私が持っていると仮定しているものを作る方法を学ぶためでした。道に迷いました。助けて?
FXCollections
のファクトリメソッドを使用します。
ObservableList<String> list = FXCollections.observableArrayList();
選択ボックスコンストラクターでの安全でない操作は、選択ボックスのタイプを指定していないためです。
ChoiceBox<String> box = new ChoiceBox<>(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));
SortedList
からのエラーは、引数を取らないコンストラクタがないためです。 (繰り返しますが、 javadocs を参照してください。)2つのコンストラクターがあります。最も単純なコンストラクターは、ObservableList
(ソート済みリストがソート済みビューを提供するリスト)への参照を取ります。そのため、次のようなものが必要になります
SortedList<String> sortedList = new SortedList<>(list);
または
SortedList<String> sortedList = new SortedList<>(FXCollections.observableArrayList());