ContextMenu
Всплывающее контекстное меню, управляющее иерархическими элементами, обработчиками действий и автозакрытием.
Обзор
ContextMenu — плавающее выпадающее контекстное меню, отображающее упорядоченный список действий, подменю и разделителей.
Ключевые возможности:
- Обычные и форматированные пункты меню с колбэками Runnable.
- Вложенные иерархические подменю.
- Умное позиционирование внутри границ экрана (hostBounds, arrangeInHost).
- Автоматическое закрытие при клике вне области меню (closeOnOutsideClick).
Создание и открытие контекстного меню
ContextMenu menu = new ContextMenu();
menu.item("Copy", () -> copy()).separator().item("Paste", () -> paste());
menu.openAt(mouseX, mouseY);
Связанные ссылки
- OverlayLayer: Полноэкранный слой оверлеев, управляющий модальными подложками, диалогами, всплывающими окнами и проверкой попаданий.
- Popup: Всплывающий виджет, позиционируемый относительно целевых элементов интерфейса или экранных координат.
API
ContextMenu()
Создает пустое контекстное меню.
ContextMenu::arrangeInHost(RectView)
Компонует меню внутри границ экрана, корректируя сторону размещения при выходе за границы.
| Параметр | Тип | Описание |
|---|---|---|
hostBounds |
RectView |
Прямоугольная область границ родительского контейнера. |
ContextMenu::close()
Закрывает меню и все активные подменю.
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::closeOnOutsideClick()
Возвращает true, если клик снаружи закрывает меню.
Возвращает boolean: True, если закрытие по клику вне виджета включено..
ContextMenu::closeOnOutsideClick(boolean)
Устанавливает, должен ли клик снаружи закрывать меню.
| Параметр | Тип | Описание |
|---|---|---|
closeOnOutsideClick |
boolean |
Закрывать ли виджет автоматически при клике вне его области. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::item(Button)
Добавляет готовую кнопку в качестве пункта меню.
| Параметр | Тип | Описание |
|---|---|---|
button |
Button |
Пользовательская кнопка для прикрепления. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::item(RichText)
Добавляет пункт меню с форматированным текстом RichText.
| Параметр | Тип | Описание |
|---|---|---|
text |
RichText |
Отображаемая текстовая строка. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::item(RichText, Runnable)
Добавляет пункт меню с форматированным текстом RichText и действием по клику.
| Параметр | Тип | Описание |
|---|---|---|
text |
RichText |
Отображаемая текстовая строка. |
action |
Runnable |
Действие для выполнения. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::item(String)
Добавляет текстовый пункт меню с простым текстом.
| Параметр | Тип | Описание |
|---|---|---|
text |
String |
Отображаемая текстовая строка. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::item(String, Runnable)
Добавляет текстовый пункт меню с действием по клику.
| Параметр | Тип | Описание |
|---|---|---|
text |
String |
Отображаемая текстовая строка. |
action |
Runnable |
Действие для выполнения. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::itemButton(int)
Возвращает кнопку элемента по указанному индексу.
| Параметр | Тип | Описание |
|---|---|---|
index |
int |
Индекс элемента (начиная с нуля). |
Возвращает Button: Экземпляр кнопки..
ContextMenu::itemCount()
Возвращает общее количество элементов в меню.
Возвращает int: Общее количество элементов..
ContextMenu::open()
Открывает меню в его последней настроенной позиции.
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::open(boolean)
Устанавливает состояние открытия контекстного меню.
| Параметр | Тип | Описание |
|---|---|---|
open |
boolean |
Флаг целевого состояния открытия. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::openAt(float, float)
Открывает меню по указанным координатам экрана.
| Параметр | Тип | Описание |
|---|---|---|
x |
float |
Горизонтальная координата X. |
y |
float |
Вертикальная координата Y. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::opened()
Возвращает true, если контекстное меню открыто.
Возвращает boolean: True, если виджет в данный момент открыт..
ContextMenu::padding(EdgeInsets)
Устанавливает внутренние отступы вокруг пунктов меню.
| Параметр | Тип | Описание |
|---|---|---|
padding |
EdgeInsets |
Внутренние отступы контента. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::selectItem(int)
Выбирает элемент меню по указанному индексу.
| Параметр | Тип | Описание |
|---|---|---|
index |
int |
Индекс элемента (начиная с нуля). |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::selectedItemIndex()
Возвращает индекс текущего наведенного или выбранного с клавиатуры элемента.
Возвращает int: Индекс элемента..
ContextMenu::separator()
Добавляет разделительную полосу между элементами.
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::separator(Separator)
Добавляет пользовательский разделитель Separator.
| Параметр | Тип | Описание |
|---|---|---|
separator |
Separator |
Визуальный элемент разделителя. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::submenu(Button, ContextMenu)
Добавляет каскадный пункт меню с подменю и пользовательской кнопкой.
| Параметр | Тип | Описание |
|---|---|---|
button |
Button |
Пользовательская кнопка для прикрепления. |
submenu |
ContextMenu |
Вложенный контейнер подменю. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::submenu(RichText, ContextMenu)
Добавляет каскадный пункт меню с подменю и текстом RichText.
| Параметр | Тип | Описание |
|---|---|---|
text |
RichText |
Отображаемая текстовая строка. |
submenu |
ContextMenu |
Вложенный контейнер подменю. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::submenu(String, ContextMenu)
Добавляет каскадный пункт меню с подменю и простым текстом.
| Параметр | Тип | Описание |
|---|---|---|
text |
String |
Отображаемая текстовая строка. |
submenu |
ContextMenu |
Вложенный контейнер подменю. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..
ContextMenu::toggle(float, float)
Переключает состояние открытия по указанным координатам.
| Параметр | Тип | Описание |
|---|---|---|
x |
float |
Горизонтальная координата X. |
y |
float |
Вертикальная координата Y. |
Возвращает ContextMenu: Текущий экземпляр виджета для цепочки вызовов..