列表
本节描述所有列表组件的公共特性,并不是可以实例化或直接使用的类。
在您的应用中可以使用三种类型的列表:ListBox、ChoiceBox和ComboBox。这些组件都显示键值项的列表,并提供添加、移除、选择和管理列表项的方法。
此页面概述了所有列表组件的共享特性和行为,而每个组件的具体细节则在其各自的页面中进行说明。
使用 ListItem
列表组件由 ListItem 对象组成,这些对象表示列表中的单独项。每个 ListItem与一个唯一的键和显示文本相关联。ListItem 类的重要特性包括:
使用 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 作为参数进行选择。
List demoList = new List();
ListItem demoItem = new ListItem("demo","示例项");
demoList.add(demoItem);
demoList.select(demoItem);
使用给定的 ListItem 键
selectKey(Object key) 以 ListItem 的键作为参数进行选择。
List demoList = new List();
demoList.add("demo","示例项");
demoList.selectKey("demo");
使用给定的 ListItem 索引
selectIndex(int index) 以 ListItem 的索引作为参数进行选择。
List demoList = new List();
demoList.add("demo","示例项");
demoList.selectKey(0);
其他列表操作
-
访问和更新项:
- 要通过键或索引访问项,请使用
getByKey(Object key)或getByIndex(int index)。 - 您可以使用
setText(String text)方法更新项的文本,位置在ListItem类中。
- 要通过键或索引访问项,请使用
-
检索关于列表的信息:
遍历列表
所有列表组件都实现了 Java Iteratable 接口,提供了一种高效和直观的方式来遍历列表的内容。通过此接口,您可以轻松循环遍历每个 ListItem,以最低的努力访问、修改或对每个项执行操作。Iterable 接口是 Java 语言的标准模式,确保您的代码对于任何 Java 开发者而言都是熟悉且可维护的。
下面的代码片段展示了两种简单的遍历列表的方法:
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("未找到水果");
显示代码
- ListSearchView.java
过滤仅仅是隐藏不匹配的项。项的索引和当前选定的项保持不变,因此 getSelectedIndex() 继续引用完整列表,而不是当前可见的项。
搜索字段可以通过 setFieldVisible(false) 隐藏。
配置字段
-
setPlaceholder()设置搜索字段的占位符文本。默认是搜索。 -
setEmptyMessage()设置搜索没有结果时显示的消息。默认是无数据可显示。
每个设置都有一个对应的 getter:isFieldVisible()、getPlaceholder()、getEmptyMessage() 和 getTerm()。
从代码过滤
setTerm() 设置搜索词并过滤列表。无论该字段是否可见都能正常工作,因此可以在不显示任何搜索 UI 的情况下对列表进行过滤。
listBox.getSearch().setTerm("苹果");
getTerm() 和搜索字段在搜索字段中输入内容不会将术语写回配置。getTerm() 返回最后传递给 setTerm() 的值 ,而不是用户输入的内容。
共享列表属性
标签
所有列表组件都可以分配一个标签,这是与组件相关的描述性文本或标题。标签提供简要说明或提示,以帮助用户理解该列表的目的或预期选择。除了对可用性的重视外,列表标签在辅助功能中也发挥着至关重要的作用,使屏幕阅读器和辅助技术能够提供准确的信息并促进键盘导航。
辅助文本
每个列表组件可以使用 setHelperText() 方法在列表下方显示辅助文本。此辅助文本提供有关可用选项的额外上下文或解释,确保用户拥有作出知情选择所需的信息。
水平对齐
所有列表组件都实现了 HasHorizontalAlignment 接口,让您控制组件内文本和内容的对齐方式。
使用 setHorizontalAlignment() 方法设置对齐方式:
HorizontalAlignment.LEFT(默认)HorizontalAlignment.MIDDLEHorizontalAlignment.RIGHT
ListBox<String> listBox = new ListBox<>();
listBox.setHorizontalAlignment(HorizontalAlignment.LEFT);
要获取当前对齐方式:
HorizontalAlignment alignment = listBox.getHorizontalAlignment();
扩展
webforJ 中的所有列表组件也实现了 HasExpanse 接口,允许您调整组件的整体大小和视觉权重。这对于将组件适应于各种 UI 上下文(如表单、对话框、侧边栏等)非常有用。
使 用 setExpanse() 方法设置扩展级别。选项包括:
Expanse.NONEExpanse.XSMALLExpanse.SMALLExpanse.MEDIUM(默认)Expanse.LARGEExpanse.XLARGE
ListBox<String> listBox = new ListBox<>();
listBox.setExpanse(Expanse.LARGE);
您可以使用以下方式检索当前设置:
Expanse current = listBox.getExpanse();
主题
ChoiceBox
Pick a single value from a fixed set with the ChoiceBox dropdown, including dropdown type styling, max row count, and keyboard navigation.
ComboBox
Combine a dropdown list with a text input in the ComboBox to let users select preset items or type custom values with placeholder support.
ListBox
Show a scrollable, always-visible list with the ListBox component, supporting single or multiple selection and keyboard navigation.