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 |
當前選中項已更改。 |