ListView

ListView 是一個基礎實現,提供繪製 items 列表的功能。繼承自 BoxView

ListView<T> 根據其 item 型別化,可以接受任何物件。進一步的 item 處理發生在 CellFactory 中。為了方便,支援通用高階列表功能,將選中狀態顯示為正常的 checkradio 型別。本質上,你可以擁有一個專案列表,這些專案按原樣顯示,或者顯示為任何專案都可以有選中狀態,或者只有一個專案可以有選中狀態。

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

表 1. ViewCommands
命令 描述

LINE_UP

選中項上移。

LINE_DOWN

選中項下移。

預設的 key bindings

表 2. 按鍵
命令 描述

CursorUp

繫結到 ViewCommand LINE_UP

CursorDown

繫結到 ViewCommand LINE_DOWN

回車鍵

選擇當前選中項。

空格鍵

更改當前選中項的選中狀態。

預設的 mouse bindings

表 3. 滑鼠
命令 描述

Wheel | WheelUp

繫結到 ViewCommand LINE_UP

Wheel | WheelDown

繫結到 ViewCommand LINE_DOWN

Released | Button1

選擇專案

事件

根據使用的列表型別傳送事件。

表 4. ListView 事件
事件 描述

ListViewOpenSelectedItemEvent

請求開啟當前選中項。

ListViewSelectedItemChangedEvent

當前選中項已更改。