创建一个Observable列表/集合

19 浏览
0 Comments

创建一个Observable列表/集合

我正在尝试在JavaFX 8中创建一个ChoiceBox,它需要一个Collection。然而我无法弄清楚如何创建Collection...如果我尝试:

ObservableList list = new ObservableList();

我会得到一个错误,说我不能实例化ObservableList,因为它是抽象的。可以理解。如果我查看ObservableList的文档,我可以看到SortedList实现了ObservableList,但我不能这样做:

ObservableList list = new SortedList();

因为没有适用的构造函数。显然我需要一个ObservableList传递给SortedList,这很奇怪,因为我无法创建一个ObservableList。

constructor SortedList.SortedList(ObservableList,Comparator)不适用

(实际和形式参数列表长度不同)

constructor SortedList.SortedList(ObservableList)不适用

(实际和形式参数列表长度不同)

我不知道如何解读这个。如果我尝试

ObservableList list = new SortedList>();

//或

ObservableList list = new SortedList>();

出于绝望,我得到了一个更加复杂的错误。

SortedList list = new SortedList();

也不起作用。不知何故,这个可以运行(但显然使用了不安全的操作):

ChoiceBox box = new ChoiceBox(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));

所以我尝试了:

ObservableList list = new FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip");

但是也没用。我非常困惑,一遍又一遍地做着相同的事情,陷入了无休止的循环中,试图理解这个问题。我找到的文档显示了没有帮助的示例,或者根本没有示例。官方文档也没用:

假设,例如,你有一个可能是List、Set或其他类型的Collection c。这个惯用法创建了一个新的ArrayList(List接口的实现),最初包含c中的所有元素。

List list = new ArrayList(c);

所以要创建一个ArrayList,List的一个实现,我需要有一个List。我之所以去查找文档,就是为了学习如何创建他们假设我已经有的东西。我迷失了方向。求助?

0