multiSelectListBox

multiSelectListBox позволяет пользователям выбирать несколько значений из прокручиваемого списка элементов с помощью флажков.

XML-элемент

multiSelectListBox

Java-класс

JmixMultiSelectListBox

Основы

Чтобы создать список элементов, используйте атрибут itemsContainer или itemsEnum:

XML
<vbox width="AUTO">
    <h4 text="Single-select ListBox"/>
    <listBox id="listBox"/>
</vbox>
<vbox width="AUTO">
    <h4 text="Multi-select ListBox"/>
    <multiSelectListBox id="multiSelectListBox"/>
</vbox>
Java
@ViewComponent
protected JmixListBox<String> listBox;
@ViewComponent
protected JmixMultiSelectListBox<String> multiSelectListBox;

@Subscribe
protected void onInit(InitEvent event) {
    List<String> items = List.of("CSS", "HTML", "Java", "JavaScript", "JSON", "Kotlin", "XML");
    listBox.setItems(items);
    multiSelectListBox.setItems(items);

    listBox.setValue("Java");
    multiSelectListBox.select("Java", "Kotlin");
}

Поставщик itemEnabledProvider

itemEnabledProvider позволяет вам динамически управлять активным состоянием отдельных элементов на основе определённых условий. Неактивные элементы отображаются серыми и не могут быть выбраны пользователем. По умолчанию все элементы активны.

@Install(to = "multiSelectListBox", subject = "itemEnabledProvider")
private boolean multiSelectListBoxItemEnabledProvider(final User user) {
    if (user != null) {
        return user.getActive();
    }
    return true;
}

Настройка надписей элементов

itemLabelGenerator позволяет вам настраивать способ отображения элементов в компоненте multiSelectListBox. Это дает вам контроль над текстом, который видят пользователи, позволяя представлять информацию в более удобном или контекстно-зависимом виде.

@Install(to = "multiSelectListBox", subject = "itemLabelGenerator")
private String multiSelectListBoxItemLabelGenerator(final User item) {
    return metadataTools.format(item.getDisplayName()).toUpperCase();
}

Рендеринг элементов

Можно настроить рендеринг элементов. Рендерер применяется к каждому элементу для создания компонента, который представляет этот элемент.

Для этого можно использовать метод setRenderer() или аннотацию @Supply.

@Supply(to = "mSelectListBox", subject = "renderer")
private ComponentRenderer<Span, User> mSelectListBoxRenderer() {
    return new ComponentRenderer<>(user -> {
        Span span = uiComponents.create(Span.class);
        span.setText(user.getDisplayName());
        span.setClassName("font-bold");
        return span;
    });
}

В качестве альтернативы вы можете отображать элементы, используя вложенный элемент fragmentRenderer. Дополнительную информацию смотрите в разделе Рендерер фрагментов.

Атрибуты

multiSelectListBox имеет следующие уникальные атрибуты:

Имя Описание По умолчанию

itemsContainer

Задаёт контейнер элементов.

itemsEnum

Задаёт перечисление элементов.

multiSelectListBox имеет следующие общие атрибуты:

Обработчики

multiSelectListBox имеет следующие уникальные обработчики:

Имя Описание

itemEnabledProvider

itemEnabledProvider применяется к каждому элементу этого multiSelectListBox, чтобы определить, должен ли этот элемент быть включен (true) или отключен (false). См. Поставщик, поддерживающий элемент.

itemLabelGenerator

Позволяет настраивать метки, отображаемые для каждого элемента в multiSelectListBox. См. Настройка меток предметов.

renderer

Устанавливает средство рендеринга элементов для этого multiSelectListBox. См. Рендеринг предметов.

multiSelectListBox имеет следующие общие обработчики:

Элементы

Компонент multiSelectListBox может содержать следующие вложенные элементы: fragmentRenderer и tooltip.

Смотрите также