首页 > 解决方案 > 通过 FXML 中的 FXCollections 创建集合

问题描述

有几十个通过FXCollectionsFXML 创建集合的示例(来自此处):

<FXCollections fx:factory="observableArrayList">
    <String fx:value="A"/>
    <String fx:value="B"/>
    <String fx:value="C"/>
</FXCollections>

但我无法理解它是如何工作的。毕竟工厂方法是无参数方法,那么String-elements去哪里了呢?我认为它是默认属性,但FXCollections没有默认属性。工厂方法有一个重载版本,observableArrayList()它在文档和源代码中采用集合元素的可变参数。但是为什么要FXML使用这种方法呢?它没有在文档中指定(或者我找不到它)。我在文档中找到的所有内容是:

fx:factory 属性是创建其类没有默认构造函数的对象的另一种方法。该属性的值是用于生成类实例的静态、无参数工厂方法的名称。例如,以下标记创建了一个可观察数组列表的实例,其中填充了三个字符串值:

我觉得这是个愚蠢的问题。但是谁能给我说清楚?

先感谢您

PS对不起我的英语

标签: javajavafxfxml

解决方案


工厂方法有一个重载版本,observableArrayList()它在文档和源代码中采用集合元素的可变参数。但是为什么 FXML 使用这种方法呢?

它没有。FXCollections.observableArrayList()用于创建列表,并且由于元素的周围<String>元素是 a List,因此将这些元素添加到列表中。产生相同结果的java代码将是

ObservableList list = FXCollections.observableArrayList();
list.add("A");
list.add("B");
list.add("C");

该列表的处理方式与只读列表属性相同,即使文档没有明确说明这一点。


推荐阅读