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