分页
小技巧
为了保证你已对服务(Service)这一概念有了基本的了解,请先保证你已了解 服务 中的内容。
PaginationService 用于把一段文本拆成离散的页面内容。这一服务提供了一个 PaginationList.Builder 用于指定页面的标题、内容、页眉、填充等属性。
分页生成器
首先我们先获取到一个 PaginationList.Builder
的实例:
import org.spongepowered.api.service.pagination.PaginationList;
PaginationList.Builder builder = PaginationList.builder();
有两种方式指定分页列表的内容:
使用
Iterable<Text>
import org.spongepowered.api.text.Text; import java.util.ArrayList; import java.util.List; List<Text> contents = new ArrayList<>(); contents.add(Text.of("Item 1")); contents.add(Text.of("Item 2")); contents.add(Text.of("Item 3")); builder.contents(contents);注解
如果这一
Iterable
实现了List
,那么这一分页支持双向导航,否则只支持单向导航。
使用
Text
数组
builder.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"));
您还可以指定分页列表的各种其他组件,例如标题,页眉,页脚、填充等。下图显示了分页列表的每个部分中显示的组件。在下图中,字母 p 将作为填充字符串填充整个分页列表。
pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer
为了实现之前的输出,我们可能会使用下面的生成器模式︰
builder.title(Text.of("Title"))
.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"))
.header(Text.of("Header"))
.footer(Text.of("Footer"))
.padding(Text.of("p"));
注解
除了内容,分页列表中的所有组件都是可选的。但是,标题是强烈建议添加的。
最后,如果想要把分页列表中的内容发送至 MessageReceiver ,我们可以使用 PaginationList.Builder#sendTo(MessageReceiver) 方法。
就是这样! 回顾一下,可以使用以下代码生成功能完整的分页列表并发送到之前定义的 msgReceiver
:
PaginationList.builder()
.title(Text.of("Title"))
.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"))
.header(Text.of("Header"))
.footer(Text.of("Footer"))
.padding(Text.of("p"))
.sendTo(msgReceiver);