ListView

ListView 是一个提供绘制项目列表功能的基本实现。继承自 BoxView

ListView<T> 的类型与其项目类型相同,可以接受任何对象。进一步的项目处理发生在CellFactory 中。为了方便起见,它支持通用的高级列表功能,以普通复选框单选按钮类型显示选中状态。实质上,您可以拥有一个项目列表,这些项目按原样显示,其中任何项目都可以具有选中状态,或者只有一个项目可以具有选中状态。

ListView<String> view = new ListView<>();
view.setItems(List.of("item1", "item2"));

默认的项目样式为未选中,但可以更改。

支持NOCHECKCHECKRADIO

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));

默认绑定

默认的视图命令

表 1. ViewCommands
命令 描述

LINE_UP

选择向上移动。

LINE_DOWN

选择向下移动。

默认的键绑定

表 2. 键
命令 描述

CursorUp

绑定 ViewCommand LINE_UP

CursorDown

绑定 ViewCommand LINE_DOWN

Enter

选择活动项目。

Space

更改活动项目的选中状态。

默认的鼠标绑定

表 3. 鼠标
命令 描述

Wheel | WheelUp

绑定 ViewCommand LINE_UP

Wheel | WheelDown

绑定 ViewCommand LINE_DOWN

Released | Button1

选择项目

事件

根据使用的列表类型发送事件。

表 4. ListView 事件
事件 描述

ListViewOpenSelectedItemEvent

请求打开活动项目。

ListViewSelectedItemChangedEvent

活动项目已更改。