跳至主要内容

Lists

在 ChatGPT 中打开
信息

本节描述所有列表组件的常见功能,并不是可以实例化或直接使用的类。

在您的应用程序中,可以使用三种类型的列表:ListBoxChoiceBoxComboBox。这些组件都显示一个键值项的列表,并提供添加、删除、选择和管理列表中项的方法。

本页面概述了所有列表组件的共享特性和行为,而每个组件的具体细节则在各自的页面中进行介绍。

使用 ListItem

列表组件由ListItem对象组成,这些对象代表列表中的单个项。每个ListItem与唯一的键和显示文本相关联。ListItem类的重要特性包括:

  • ListItem封装了一个唯一的键Object和在列表组件中显示的文本String
  • 您可以通过提供键和文本来构造一个ListItem,或者仅指定文本以生成随机键。

使用API管理 ListItem 对象

各种列表组件提供多种方法来管理项列表并保持列表与客户端之间的一致状态。通过使用这些方法,您可以有效管理列表中的项。API使您能够与列表进行交互和操作,以满足应用程序的需求。

添加项

提示

为了优化性能,与其在每次使用add()方法时触发服务器与客户端之间的消息,更高效的做法是先创建一个ListItem对象的列表。一旦您拥有这个列表,您可以使用insert(int index, List<ListItem> items)方法一次性添加所有项。这种方法减少了服务器与客户端的通信,提高了整体效率。有关此方面及webforJ架构中的其他最佳实践的详细指南,请参阅客户端/服务器交互

删除项

选择项

所有列表类型实现了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);

其他列表操作

遍历列表

所有列表组件实现了Java Iteratable接口,提供了一种高效且直观的方式来遍历列表的内容。通过这个接口,您可以轻松循环访问每个ListItem,使得以最小的努力访问、修改或对每个项执行操作变得简单。Iterable接口是Java语言的标准模式,确保您的代码对任何Java开发人员都是熟悉且易于维护的。

下面的代码片段展示了两种简单的方法来遍历一个列表:

list.forEach(item -> {
item.setText("修改: " + item.getText());
});

for (ListItem item : list) {
item.setText("修改2: " + item.getText());
}

共享列表属性

标签

所有列表组件都可以分配一个标签,即与组件关联的描述性文本或标题。标签提供简要说明或提示,帮助用户理解特定列表的目的或预期选择。除了对可用性的重要性外,列表标签也在可访问性方面起着关键作用,使屏幕阅读器和辅助技术能够提供准确的信息并促进键盘导航。

辅助文本

每个列表组件可以使用setHelperText()方法在列表下方显示辅助文本。这些辅助文本提供额外的上下文或关于可用选项的解释,确保用户具备必要的信息以做出明智的选择。

水平对齐

所有列表组件实现了HasHorizontalAlignment接口,允许您控制组件内部文本和内容的对齐方式。

使用setHorizontalAlignment()方法设置对齐方式:

  • HorizontalAlignment.LEFT(默认)
  • HorizontalAlignment.MIDDLE
  • HorizontalAlignment.RIGHT
ListBox<String> listBox = new ListBox<>();
listBox.setHorizontalAlignment(HorizontalAlignment.LEFT);

要获取当前对齐方式:

HorizontalAlignment alignment = listBox.getHorizontalAlignment();

尺寸

webforJ中的所有列表组件也实现了HasExpanse接口,允许您调整组件的整体尺寸和视觉权重。这对于在不同的UI上下文中调整组件(例如表单、对话框、侧边栏等)非常有用。

使用setExpanse()方法设置尺寸级别。选项包括:

  • Expanse.NONE
  • Expanse.XSMALL
  • Expanse.SMALL
  • Expanse.MEDIUM(默认)
  • Expanse.LARGE
  • Expanse.XLARGE
ListBox<String> listBox = new ListBox<>();
listBox.setExpanse(Expanse.LARGE);

可以使用以下方式检索当前设置:

Expanse current = listBox.getExpanse();

主题