listMenu
listMenu
- это компонент для отображения вертикального меню с выпадающими подменю, которые можно сворачивать.
XML-элемент |
|
---|---|
Java-класс |
|
Атрибуты |
id - alignSelf - classNames - colspan - css - height - loadMenuConfig - maxHeight - maxWidth - minHeight - minWidth - themeNames - visible - width |
Обработчики |
Основы
listMenu
, вместе с drawerToggle
и drawerLayout
, используется в MainView
.
listMenu
позволяет вам настраивать главный экран, управлять элементами меню и применять собственные стили.
Его также можно использовать в любом экране как любой другой визуальный компонент.
Чтобы добавить компонент в экран, поместите его в дескриптор XML:
<listMenu id="listMenu"/>
Вы также можете создать компонент и добавить его в экран в Java-контроллере:
@ViewComponent
private VerticalLayout navigation;
@Autowired
private UiComponents uiComponents;
@Autowired
private ApplicationContext applicationContext;
@Subscribe
public void onInit(final InitEvent event) {
JmixListMenu listMenu = uiComponents.create(JmixListMenu.class);
MenuConfigListMenuItemProvider itemProvider =
applicationContext.getBean(MenuConfigListMenuItemProvider.class);
listMenu.setMenuItemProvider(itemProvider);
navigation.add(listMenu);
itemProvider.load();
}
Привязка данных
Атрибут loadMenuConfig управляет тем, загружает ли компонент listMenu
свою структуру из класса MenuConfig. По умолчанию этот атрибут установлен в true
, что означает, что listMenu
будет загружать свои элементы меню из файла menu.xml
.
Вы также можете создавать элементы меню программным образом, используя экземпляр JmixListMenu
, например:
@Route("")
@ViewController("MainView")
@ViewDescriptor("main-view.xml")
public class MainView extends StandardMainView {
@ViewComponent
private JmixListMenu menu;
@Subscribe
public void onInit(final InitEvent event) {
ListMenu.MenuBarItem rootItem = new ListMenu.MenuBarItem("help")
.withTitle("Help")
.withPrefixComponent(VaadinIcon.QUESTION.create()); (1)
ListMenu.MenuItem subItemNews = new ListMenu.MenuItem("news")
.withTitle("News")
.withClickHandler( (2)
item -> {
notifications.create("News menu item clicked")
.show();
}
);
rootItem.addChildItem(subItemNews);
ListMenu.MenuSeparatorItem sep =
new ListMenu.MenuSeparatorItem("separator"); (3)
rootItem.addChildItem(sep);
ListMenu.MenuItem subItemBlog = new ListMenu.MenuItem("blog")
.withTitle("Blog");
rootItem.addChildItem(subItemBlog);
menu.addMenuItem(rootItem);
}
}
1 | Создает новый элемент меню с иконкой. |
2 | Создает новый элемент меню с обработчиком clickHandler . |
3 | Создает новый элемент-разделитель. |
Значки для элементов меню
Пример настройки значков для элементов меню вы можете найти в разделе События UI.
Варианты оформления
Атрибут themeNames позволяет вам назначить определенный стиль listMenu
из набора предопределенных вариантов.
Обратный порядок отображения маркера
С настройкой themeNames="toggle-reverse"
в компоненте listMenu
, маркер развертывания/сворачивания будет перемещен в конец родительского элемента меню. Это означает, что иконка, показывающая, развернуты ли дочерние элементы меню или свернуты, будет расположена справа от метки родительского элемента меню.
Атрибуты
В Jmix есть множество общих атрибутов, которые выполняют одну и ту же функцию для всех компонентов.
Ниже приведены атрибуты, специфичные для listMenu
:
Название |
Описание |
Значение по умолчанию |
---|---|---|
Атрибут |
|