【问题标题】:Creation of collection via FXCollections from FXML通过 FXML 中的 FXCollections 创建集合
【发布时间】:2019-08-03 11:40:37
【问题描述】:

有许多通过FXCollections 从 FXML 创建集合的示例(来自 here):

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

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

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

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

提前谢谢你

附:对不起我的英语

【问题讨论】:

    标签: java javafx fxml


    【解决方案1】:

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

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

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

    该列表的处理方式与 read-only list properties 相同,即使文档没有明确说明这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2018-04-28
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多