multiSelectListBox
multiSelectListBox позволяет пользователям выбирать несколько значений из прокручиваемого списка элементов с помощью флажков.
XML-элемент |
|
|---|---|
Java-класс |
|
Основы
Чтобы создать список элементов, используйте атрибут itemsContainer или itemsEnum:
<vbox width="AUTO">
<h4 text="Single-select ListBox"/>
<listBox id="listBox"/>
</vbox>
<vbox width="AUTO">
<h4 text="Multi-select ListBox"/>
<multiSelectListBox id="multiSelectListBox"/>
</vbox>
@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 имеет следующие уникальные атрибуты:
| Имя | Описание | По умолчанию |
|---|---|---|
Задаёт контейнер элементов. |
— |
|
Задаёт перечисление элементов. |
— |
multiSelectListBox имеет следующие общие атрибуты:
Обработчики
multiSelectListBox имеет следующие уникальные обработчики:
| Имя | Описание |
|---|---|
|
|
Позволяет настраивать метки, отображаемые для каждого элемента в |
|
Устанавливает средство рендеринга элементов для этого |
multiSelectListBox имеет следующие общие обработчики:
Элементы
Компонент multiSelectListBox может содержать следующие вложенные элементы: fragmentRenderer и tooltip.