ListView

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

ListView<T> 的類型為其 項目,並且可以接受任何物件。更進一步的 項目 處理發生在 CellFactory 中。為了方便起見,它支援通用高階列表功能,將勾選狀態顯示為一般的 checkradio 類型。基本上,您可以擁有一個項目列表,該列表可以原樣顯示,也可以顯示為任何項目都可以具有勾選狀態,或者只有一個項目可以具有勾選狀態。

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

預設的 項目樣式 是 nocheck,但可以更改。

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

預設綁定

預設的 視圖命令

表 1. 視圖命令
命令 描述

LINE_UP

選取向上移動。

LINE_DOWN

選取向下移動。

預設的 按鍵綁定

表 2. 按鍵
命令 描述

CursorUp

綁定的視圖命令 LINE_UP

CursorDown

綁定的視圖命令 LINE_DOWN

Enter

選擇活動項目。

Space

變更活動項目選取狀態。

預設的 滑鼠綁定

表 3. 滑鼠
命令 描述

滾輪 | WheelUp

綁定的視圖命令 LINE_UP

滾輪 | WheelDown

綁定的視圖命令 LINE_DOWN

Released | Button1

選擇項目

事件

事件會根據使用的列表類型發送。

表 4. ListView 事件
事件 描述

ListViewOpenSelectedItemEvent

請求開啟活動項目。

ListViewSelectedItemChangedEvent

活動項目已變更。