列表
本节描述了所有列表组件的通用特性,并不是可以实例化或直接使用的类。
在您的应用中可用的列表有三种类型:ListBox、ChoiceBox 和 ComboBox。这些组件都显示一组键值项,并提供方法来添加、删除、选择和管理列表中的项。
本页面概述了所有列表组件的共同特性和行为,而每个组件的具体细节则在其各自的页面中介绍。
使用 ListItem
列表组件由 ListItem 对象组成,代表列表中的单个项。每个 ListItem 都与一个唯一的键和显示文本相关联。 ListItem 类的重要特性包括:
键在列表中必须是唯一的。添加第二个仅包含文本的项且文本相同会抛出 IllegalArgumentException。若要显示重复标签,请为这些项提供不同的键。
使用 API 管理 ListItem 对象
各种列表组件提供了几个方法来管理项列表,并保持列表与客户端之间的一致状态。通过使用这些方法,您可以有效管理列表中的项。API 允许您与列表进行交互并对其进行操作以满足应用的需求。
添加项
-
添加一个项:
- 要将
ListItem添加到列表中,您可以使用add(ListItem item)方法。 - 您还可以通过使用
add(Object key, String text)或add(String text)方法指定键和文本来添加新的ListItem。
- 要将
-
在特定索引处插入项:
- 要在特定索引处插入项,请使用
insert(int index, ListItem item)方法。 - 您可以使用
insert(int index, Object key, String text)或insert(int index, String text)方法插入具有键和文本的项。
- 要在特定索引处插入项,请使用
-
插入多个项:
- 您可以使用
insert(int index, List< ListItem > items)方法在指定索引处插入多个项。
- 您可以使用
为了优化性能,最好在每次使用 add() 方法时,不要触发服务与客户端之间的消息,而是先创建一个 ListItem 对象的列表。一旦获取了此列表,您可以通过 insert(int index, List<ListItem> items) 方法一次性添加所有项。这种方法减少了服务与客户端的通信,提高了整体效率。有关此和其他 webforJ 架构最佳实践的详细指引,请参阅 Client/Server Interaction。
删除项
-
删除一个项:
- 要从列表中删除一个项,请使用
remove(int index)或remove(Object key)方法。
- 要从列表中删除一个项,请使用
-
删除所有项:
- 您可以使用
removeAll()从列表中删除所有项。
- 您可以使用
选择项
所有列表类型实现了 SelectableList 接口。该接口允许以多种不同方式选择当前的 ListItem。
使用给定的 ListItem
select(ListItem item) 以 ListItem 为参数进行选择。
ListBox demoList = new ListBox();
ListItem demoItem = new ListItem("demo","示例项");
demoList.add(demoItem);
demoList.select(demoItem);
以 ListItem 的给定键
selectKey(Object key) 以 ListItem 的键作为参数进行选择。
ListBox demoList = new ListBox();
demoList.add("demo","示例项");
demoList.selectKey("demo");
以 ListItem 的给定索引
selectIndex(int index) 以 ListItem 的索引作为参数进行选择。
ListBox demoList = new ListBox();
demoList.add("demo","示例项");
demoList.selectIndex(0);
其他列表操作
-
访问和更新项:
- 要通过键或索引访问项,请使用
getByKey(Object key)或getByIndex(int index)。 - 您可以在
ListItem类中使用setText(String text)方法更新项的文本。
- 要通过键或索引访问项,请使用
-
检索有关列表的信息:
遍历列表
所有列表组件都实现了 Java Iterable 接口。使用 forEach() 或 for 循环来访问或修改每个 ListItem。
以下代码示例演示了两种遍历列表的简单方法:
list.forEach(item -> {
item.setText("已修改: " + item.getText());
});
for (ListItem item : list) {
item.setText("已修改2: " + item.getText());
}
搜索 26.02
所有列表组件都具有内置的搜索字段,可以根据文本过滤项。该字段默认情况下关闭。使用 getSearch() 获取搜索配置,然后使用 setFieldVisible(true) 在组件列表顶部显示该字段。
ComboBox comboBox = new ComboBox("水果");
comboBox.insert("苹果", "香蕉", "樱桃", "杏子", "菠萝");
comboBox.getSearch()
.setFieldVisible(true)
.setPlaceholder("搜索水果")
.setEmptyMessage("未找到水果");
过滤仅隐藏不匹配的项。项的索引和当前选择不受影响,因此 getSelectedIndex() 继续引用完整列表,而不是当前可见的项。
搜索字段可以再次隐藏,使用 setFieldVisible(false)。