exponenta event banner

uicontextmenu

Создание компонента контекстного меню

Описание

cm = uicontextmenu создает контекстное меню на текущем рисунке и возвращает ContextMenu объект. Если цифра не существует, MATLAB ® вызывает figure для создания функции.

Чтобы открыть контекстное меню на рисунке, необходимо выполнить следующие действия.

  • Назначьте контекстное меню компоненту пользовательского интерфейса или графическому объекту на том же рисунке.

  • Создать хотя бы один дочерний элемент Menu в контекстном меню.

пример

cm = uicontextmenu(parent) создает контекстное меню на указанной родительской фигуре. Родительский элемент может быть фигурой, созданной с помощью uifigure или figure функция.

пример

cm = uicontextmenu(___,Name,Value) создает контекстное меню со значениями свойств, заданными с помощью одного или нескольких аргументов пары имя-значение. Укажите пары имя-значение с любым из предыдущих синтаксисов.

Примеры

свернуть все

Создайте контекстное меню с двумя подменю на рисунке пользовательского интерфейса. Назначьте контекстное меню самой фигуре, установив ContextMenu свойства фигуры к ContextMenu объект. Для просмотра контекстного меню щелкните правой кнопкой мыши в любом месте окна рисунка.

fig = uifigure;

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Menu1');
m2 = uimenu(cm,'Text','Menu2');

fig.ContextMenu = cm;

Создайте контекстное меню с действиями, соответствующими компоненту дерева. Назначьте контекстное меню узлам дерева верхнего уровня в дереве.

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

fig = uifigure;

tree = uitree(fig,'Position',[20 200 175 100]);

category1 = uitreenode(tree,'Text','Runners');
r1 = uitreenode(category1,'Text','Joe');
r2 = uitreenode(category1,'Text','Linda');

category2 = uitreenode(tree,'Text','Cyclists');
c1 = uitreenode(category2,'Text','Rajeev');

category3 = uitreenode(tree,'Text','Hikers');
h1 = uitreenode(category3,'Text','Jack');

category4 = uitreenode(tree,'Text','Swimmers');
s1 = uitreenode(category4,'Text','Logan');

Создайте контекстное меню с тремя пунктами меню. Для последнего пункта меню создайте четыре подменю.

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Expand All');
m2 = uimenu(cm,'Text','Collapse All');
m3 = uimenu(cm,'Text','Scroll To...');

sbm1 = uimenu(m3,'Text','Runners');
sbm2 = uimenu(m3,'Text','Cyclists');
sbm3 = uimenu(m3,'Text','Hikers');
sbm4 = uimenu(m3,'Text','Swimmers');

Затем назначьте контекстное меню узлам дерева верхнего уровня, установив ContextMenu свойства каждого узла для ContextMenu объект.

category1.ContextMenu = cm;
category2.ContextMenu = cm;
category3.ContextMenu = cm;
category4.ContextMenu = cm;

Щелкните правой кнопкой мыши любой узел дерева верхнего уровня для просмотра контекстного меню.

На данный момент код ещё не закончен. Контекстное меню появляется при щелчке правой кнопкой мыши, но выбор пунктов меню не оказывает никакого влияния. Чтобы завершить реализацию поведения пунктов меню, создайте MenuSelectedFcn функция обратного вызова.

Создайте контекстное меню, которое печатает сообщение в окне команд при каждом его открытии.

Создание линейного графика на традиционной фигуре. Затем создайте контекстное меню с одним пунктом меню и назначьте его линейному графику. Создать ContextMenuOpeningFcn функция обратного вызова, отображающая выходные данные в окне команд при каждом открытии контекстного меню.

f = figure;
p = plot(1:10);

cm = uicontextmenu(f);
m = uimenu(cm,'Text','Menu1');
cm.ContextMenuOpeningFcn = @(src,event)disp('Context menu opened');

p.ContextMenu = cm;

Для просмотра контекстного меню щелкните правой кнопкой мыши на линии печати. При открытии контекстного меню в окне команд также отображается следующее сообщение: Context menu opened.

The context menu with a menu item called "Menu1" displays on the plot line.

Входные аргументы

свернуть все

Родительская фигура, указанная как Figure объект, созданный с помощью uifigure или figure функция. Если родительская цифра не указана, MATLAB вызывает figure для создания родительской функции.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'ContextMenuOpeningFcn',@myfunction определяет myfunction является функцией, выполняемой при взаимодействии пользователя с контекстным меню.

Перечисленные здесь свойства являются только подмножеством, полный список см. в разделе Свойства ContextMenu.

Функция обратного вызова при открытии контекстного меню, заданная как одно из следующих значений:

  • Дескриптор функции.

  • Массив ячеек, в котором первый элемент является дескриптором функции. Последующие элементы в массиве ячеек являются аргументами для передачи функции обратного вызова.

  • Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуется). MATLAB вычисляет это выражение в базовой рабочей области.

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

Потомки контекстного меню, возвращенные как пустые GraphicsPlaceholder или вектор Menu объекты.

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

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

fig = uifigure;
cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Menu1');
m2 = uimenu(cm,'Text','Menu2');
m3 = uimenu(cm,'Text','Menu3');
fig.ContextMenu = cm;
Context menu with three menu items.

cm.Children возвращает список пунктов меню в обратном порядке.

cm.Children
ans = 

  3×1 Menu array:

  Menu    (Menu3)
  Menu    (Menu2)
  Menu    (Menu1)

Объекты с HandleVisibility свойство имеет значение 'off' не перечислены в Children собственность.

Чтобы добавить дочерний элемент в этот список, установите Parent собственность другого Menu возражать против этого ContextMenu объект.

Совет

  • Для интерактивного отображения контекстного меню в запущенном приложении необходимо:

    • Иметь хотя бы один пункт меню.

    • Быть назначенным компоненту пользовательского интерфейса или графическому объекту на том же рисунке.

  • Чтобы открыть контекстное меню программным способом, используйте команду open функция. Контекстное меню должно быть потомком фигуры, созданной с помощью uifigure функция. Чтобы отобразить контекстное меню, оно должно иметь хотя бы один пункт меню, созданный с помощью uimenu функция.

См. также

Функции

Свойства

Представлен до R2006a