ListView

ListView は項目のリストを描画する機能を提供する基本実装です。BoxView を継承します。

ListView<T>項目として型指定され、任意のオブジェクトを取得できます。さらなる項目処理は CellFactory で行われます。便宜上、チェックされた状態を通常のチェックおよび無線型として表示する一般的な上位レベルのリスト機能がサポートされています。基本的に、取得できるのは、そのまま表示されるアイテムのリストで、どのアイテムもチェック状態にできるか、1 つのアイテムだけがチェック状態にできるかを示します。

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: ViewCommands
コマンド 説明

LINE_UP

選択範囲が上に移動します。

LINE_DOWN

選択範囲が下に移動します。

デフォルトのキーバインドは次のとおりです。

表 2: キー
コマンド 説明

CursorUp

バインド ViewCommand LINE_UP

CursorDown

バインド ViewCommand LINE_DOWN

Enter

アクティブなアイテムを選択します。

スペース

アクティブな項目の選択状態を変更します。

デフォルトのマウスバインディグは次のとおりです。

表 3: マウス動作の詳細
コマンド 説明

車輪 | WheelUp

バインド ViewCommand LINE_UP

車輪 | WheelDown

バインド ViewCommand LINE_DOWN

リリース済み | ボタン 1

項目を選択してください

イベント

イベントは、使用されるリストの種類に応じて送信されます。

表 4: ListView イベント
イベント 説明

ListViewOpenSelectedItemEvent

アクティブなアイテムを開くようにリクエストされます。

ListViewSelectedItemChangedEvent

アクティブなアイテムが変更されます。