ListView
ListView 是一個基礎實作,提供繪製 項目 列表的功能。繼承自 BoxView。
ListView<T> 的類型為其 項目,並且可以接受任何物件。更進一步的 項目 處理發生在 CellFactory 中。為了方便起見,它支援通用高階列表功能,將勾選狀態顯示為一般的 check 和 radio 類型。基本上,您可以擁有一個項目列表,該列表可以原樣顯示,也可以顯示為任何項目都可以具有勾選狀態,或者只有一個項目可以具有勾選狀態。
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));
預設綁定
預設的 視圖命令 為
命令 | 描述 |
---|---|
LINE_UP |
選取向上移動。 |
LINE_DOWN |
選取向下移動。 |
預設的 按鍵綁定 為
命令 | 描述 |
---|---|
CursorUp |
綁定的視圖命令 LINE_UP |
CursorDown |
綁定的視圖命令 LINE_DOWN |
Enter |
選擇活動項目。 |
Space |
變更活動項目選取狀態。 |
預設的 滑鼠綁定 為
命令 | 描述 |
---|---|
滾輪 | WheelUp |
綁定的視圖命令 LINE_UP |
滾輪 | WheelDown |
綁定的視圖命令 LINE_DOWN |
Released | Button1 |
選擇項目 |
事件
事件會根據使用的列表類型發送。
事件 | 描述 |
---|---|
ListViewOpenSelectedItemEvent |
請求開啟活動項目。 |
ListViewSelectedItemChangedEvent |
活動項目已變更。 |