java - 通过 FXML 中的 FXCollections 创建集合
问题描述
有几十个通过FXCollections
FXML 创建集合的示例(来自此处):
<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对不起我的英语
解决方案
工厂方法有一个重载版本,
observableArrayList()
它在文档和源代码中采用集合元素的可变参数。但是为什么 FXML 使用这种方法呢?
它没有。FXCollections.observableArrayList()
用于创建列表,并且由于元素的周围<String>
元素是 a List
,因此将这些元素添加到列表中。产生相同结果的java代码将是
ObservableList list = FXCollections.observableArrayList();
list.add("A");
list.add("B");
list.add("C");
该列表的处理方式与只读列表属性相同,即使文档没有明确说明这一点。
推荐阅读
- excel - 如何点击雅虎财经中的搜索按钮
- c++ - 交互式 Voronoi 多边形?
- java - 带有 Box2D 的 LibGDX,无法理解 Velocity().y
- git - 无法让 GIT 通过终端推送存储库
- javascript - 如何将 v-chips 放置在 textarea 或可编辑的 div 中?
- python - 我应该在成功安装软件包后删除 .whl 安装程序吗?
- c# - 简单的 C# 输出命令提示符应用程序
- sql - 只有在所有成分都匹配的情况下才能获得食谱
- java - 如何将反斜杠字符存储在字符串变量中?
- emacs - 在 Emacs 中制作 Tab 键功能类似于 Notepad++