ListView
ListView 是一个基础实现,提供绘制 items 列表的功能。继承自 BoxView。
ListView<T> 根据其 item 类型化,可以接受任何对象。进一步的 item 处理发生在 CellFactory 中。为了方便,支持通用高级列表功能,将选中状态显示为正常的 check 和 radio 类型。本质上,你可以拥有一个项目列表,这些项目按原样显示,或者显示为任何项目都可以有选中状态,或者只有一个项目可以有选中状态。
ListView<String> view = new ListView<>();
view.setItems(List.of("item1", "item2"));
默认的 item style 是 nocheck,但可以更改。
支持 NOCHECK
、 `CHECK
和 `RADIO`
ListView<String> view = new ListView<>(ItemStyle.CHECKED);
定制
单个单元格的显示方式取决于 CellFactory。默认实现只是使用其 toString()
方法显示 item。
可以通过修改使用的 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));
默认绑定
默认的 view commands 是
命令 | 描述 |
---|---|
LINE_UP |
选中项上移。 |
LINE_DOWN |
选中项下移。 |
默认的 key bindings 是
命令 | 描述 |
---|---|
CursorUp |
绑定到 ViewCommand LINE_UP |
CursorDown |
绑定到 ViewCommand LINE_DOWN |
回车键 |
选择当前选中项。 |
空格键 |
更改当前选中项的选中状态。 |
默认的 mouse bindings 是
命令 | 描述 |
---|---|
Wheel | WheelUp |
绑定到 ViewCommand LINE_UP |
Wheel | WheelDown |
绑定到 ViewCommand LINE_DOWN |
Released | Button1 |
选择项目 |
事件
根据使用的列表类型发送事件。
事件 | 描述 |
---|---|
ListViewOpenSelectedItemEvent |
请求打开当前选中项。 |
ListViewSelectedItemChangedEvent |
当前选中项已更改。 |