ListView
ListView 是一个提供绘制项目列表功能的基本实现。继承自 BoxView。
ListView<T> 的类型与其项目类型相同,可以接受任何对象。进一步的项目处理发生在CellFactory 中。为了方便起见,它支持通用的高级列表功能,以普通复选框和单选按钮类型显示选中状态。实质上,您可以拥有一个项目列表,这些项目按原样显示,其中任何项目都可以具有选中状态,或者只有一个项目可以具有选中状态。
ListView<String> view = new ListView<>();
view.setItems(List.of("item1", "item2"));
默认的项目样式为未选中,但可以更改。
支持NOCHECK
、CHECK
和 RADIO
ListView<String> view = new ListView<>(ItemStyle.CHECKED);
定制化
各个单元格的显示方式取决于CellFactory。默认实现只是使用其toString()
方法显示项目。
可以通过修改使用的CellFactory 来定制它。
record ExampleData(String name) {
};
static class ExampleListCell extends AbstractListCell<ExampleData> {
public ExampleListCell(ExampleData item) {
super(item);
}
@Override
public void draw(Screen screen) {
Rectangle rect = getRect();
Writer writer = screen.writerBuilder().style(getStyle()).build();
writer.text(getItem().name(), rect.x(), rect.y());
writer.background(rect, getBackgroundColor());
}
}
并将其设置为工厂
ListView<ExampleData> view = new ListView<>();
view.setCellFactory((list, item) -> new ExampleListCell(item));
默认绑定
默认的视图命令是
命令 | 描述 |
---|---|
LINE_UP |
选择向上移动。 |
LINE_DOWN |
选择向下移动。 |
默认的键绑定是
命令 | 描述 |
---|---|
CursorUp |
绑定 ViewCommand LINE_UP |
CursorDown |
绑定 ViewCommand LINE_DOWN |
Enter |
选择活动项目。 |
Space |
更改活动项目的选中状态。 |
默认的鼠标绑定是
命令 | 描述 |
---|---|
Wheel | WheelUp |
绑定 ViewCommand LINE_UP |
Wheel | WheelDown |
绑定 ViewCommand LINE_DOWN |
Released | Button1 |
选择项目 |
事件
根据使用的列表类型发送事件。
事件 | 描述 |
---|---|
ListViewOpenSelectedItemEvent |
请求打开活动项目。 |
ListViewSelectedItemChangedEvent |
活动项目已更改。 |