Main Content

open

在 UI 图窗中的位置打开上下文菜单

自 R2020a 起

说明

示例

open(cm,x,y) 在作为父容器的 UI 图窗中指定的 (x, y) 坐标处打开上下文菜单 cm。坐标是从图窗的左下角以像素为单位测量的。该图窗必须是使用 uifigure 函数创建的图窗。

open(cm,coord) 将像素坐标指定为二元素向量 coord。例如,open(cm,[100 150]) 在坐标 (100,150) 处打开上下文菜单 cm

示例

全部折叠

创建一个 UI 图窗。创建一个包含两个子菜单的上下文菜单,并将其分配给该 UI 图窗。

fig = uifigure;

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Import Data');
m2 = uimenu(cm,'Text','Export Data');

fig.ContextMenu = cm;

然后,在位置 (250,250) 上打开上下文菜单。

open(cm,250,250)

当您右键点击作为父容器的 UI 图窗的空白区域或支持 ButtonDownFcn 属性的图形对象时,将打开一个未分配的上下文菜单。

首先,创建一个名为 openCtxtMenu.m 的程序文件。在该程序文件中:

  • 在一个 UI 图窗中创建 UI 坐标区并在坐标区中绘制数据。

  • 在 UI 图窗中创建具有一个子菜单的上下文菜单。

  • WindowButtonDownFcn 属性设置为名为 onButtonDown 的回调函数。

  • 创建一个名为 onButtonDown 的回调函数。在其中,通过查询 UI 图窗的 SelectionType 属性来确定选择是否为右键点击。在右键点击时,从 CurrentPoint 属性获取鼠标指针的 xy 坐标。xy 坐标是它返回的向量的第一个和第二个元素。然后,在这些坐标处打开上下文菜单。当出现其他选择类型时,在命令行窗口中显示一条消息。

function openCtxtMenu
fig = uifigure;
ax = uiaxes(fig);
plot(ax,magic(5));

cm = uicontextmenu(fig);
m = uimenu(cm,'Text','Menu1');

fig.WindowButtonDownFcn = @onButtonDown;

    function onButtonDown(src,event)
        clickType = src.SelectionType;

        switch clickType
            case 'alt'
            x = src.CurrentPoint(1);
            y = src.CurrentPoint(2);
            open(cm,x,y)

            otherwise
            disp('Right-click to view context menu')
        end

    end

end

运行程序文件,然后右键点击 UI 坐标区或 UI 图窗中的空白区域可打开上下文菜单。

openContextMenu

UI figure window with a UI axes. The mouse pointer is over the axes, and there is a context menu next to the pointer.

输入参数

全部折叠

使用 uicontextmenu 函数创建的上下文菜单对象。

x 坐标,即距 UI 图窗左边缘的距离,指定为一个整数(以像素为单位)。如果指定的值超过图窗的宽度,则上下文菜单将不可见。

y 坐标,即距图窗下边缘的距离,指定为一个整数(以像素为单位)。如果指定的值超过图窗的高度,则上下文菜单将不可见。

像素坐标,指定为由整数值组成的二元素行向量。

示例: [100 150] 指定像素坐标 (100,150)

提示

  • 通过按键或在上下文菜单外点击鼠标来关闭上下文菜单。您无法以编程方式关闭上下文菜单。

算法

当您调用 open 函数时,ContextMenuOpeningFcn 回调函数不执行。回调函数仅由用户交互触发。

版本历史记录

在 R2020a 中推出

另请参阅