uicontextmenu
创建上下文菜单组件
说明
在当前图窗中创建一个上下文菜单,并返回 cm
= uicontextmenuContextMenu
对象。如果图窗不存在,则 MATLAB® 调用 figure
函数以创建一个图窗。
要使该上下文菜单能够在图窗中打开,您还必须执行以下步骤:
将该上下文菜单分配给同一图窗中的 UI 组件或图形对象。
在该上下文菜单中创建至少一个子级
Menu
对象。
创建一个上下文菜单,其中包含使用一个或多个名称-值参数指定的属性值。使用上述任一语法指定名称-值参数。cm
= uicontextmenu(___,Name,Value
)
示例
整个 UI 图窗的上下文菜单
在 UI 图窗中创建一个具有两个菜单项的上下文菜单。通过将图窗的 ContextMenu
属性设置为 ContextMenu
对象,将该上下文菜单分配给图窗本身。要查看上下文菜单,请右键点击图窗窗口中的任意位置。
fig = uifigure; cm = uicontextmenu(fig); m1 = uimenu(cm,'Text','Menu1'); m2 = uimenu(cm,'Text','Menu2'); fig.ContextMenu = cm;
特定组件的上下文菜单
创建具有一个按钮的 UI 图窗。然后,在该图窗中创建一个包含两个菜单项的上下文菜单,并将该上下文菜单分配给该按钮。要查看上下文菜单,请右键点击该按钮。
fig = uifigure; btn = uibutton(fig); cm = uicontextmenu(fig); m1 = uimenu(cm,"Text","Option 1"); m2 = uimenu(cm,"Text","Option 2"); btn.ContextMenu = cm;
跨组件共享上下文菜单
为树组件创建一个上下文菜单。将该上下文菜单分配给树中的所有顶层节点。
在当前文件夹的新脚本中,创建一个 UI 图窗。然后,创建一个树,其中包含四个顶层节点和一组嵌套节点。
fig = uifigure; t = uitree(fig,"Position",[20 200 175 100]); category1 = uitreenode(t,"Text","Runners"); r1 = uitreenode(category1,"Text","Joe"); r2 = uitreenode(category1,"Text","Linda"); category2 = uitreenode(t,"Text","Cyclists"); c1 = uitreenode(category2,"Text","Rajeev"); category3 = uitreenode(t,"Text","Hikers"); h1 = uitreenode(category3,"Text","Jack"); category4 = uitreenode(t,"Text","Swimmers"); s1 = uitreenode(category4,"Text","Logan");
创建一个上下文菜单,其中包含一个菜单项和两个子菜单,用户可以点击该上下文菜单来展开单个树节点或所有树节点。对于每个子菜单,指定当用户选择菜单选项时要执行的 MenuSelectedFcn
回调函数。将相关的 App 对象作为输入传递给每个函数,以便从回调函数中访问 App 数据。
cm = uicontextmenu(fig); m1 = uimenu(cm,"Text","Expand..."); sbm1 = uimenu(m1,"Text","This Node", ... "MenuSelectedFcn",{@expandSingle,fig}); sbm2 = uimenu(m1,"Text","All Nodes", ... "MenuSelectedFcn",{@expandAll,t});
通过将每个节点的 ContextMenu
属性设置为 ContextMenu
对象,将上下文菜单分配给顶层树节点。
category1.ContextMenu = cm; category2.ContextMenu = cm; category3.ContextMenu = cm; category4.ContextMenu = cm;
在文件的底部,定义 expandSingle
和 expandAll
回调函数。定义函数来接受 MATLAB 传递给所有回调函数的源和事件数据。
定义 expandSingle
函数来同时接受包含树的 UI 图窗对象,并使用图窗的 CurrentObject
属性来确定点击哪个树节点来显示上下文菜单。然后,展开该节点。
定义 expandAll
函数来同时接受树对象,并展开树中的所有节点。
function expandSingle(src,event,f) node = f.CurrentObject; expand(node) end function expandAll(src,event,t) expand(t) end
保存并运行脚本。右键点击任一顶层树节点可查看上下文菜单。
上下文菜单打开时的动作
创建这样一个上下文菜单,每次打开该上下文菜单时都会在命令行窗口中显示一条消息。
在传统图窗中创建一个线图。然后,创建包含一个菜单项的上下文菜单,并将该菜单分配给线图。创建一个 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
。
输入参数
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: uicontextmenu("ContextMenuOpeningFcn",@myfunction)
将 myfunction
指定为用户打开上下文菜单时执行的函数。
注意
此处所列的属性只是一部分。有关完整列表,请参阅 ContextMenu 属性。
ContextMenuOpeningFcn
— 上下文菜单打开回调函数
''
(默认) | 函数句柄 | 元胞数组 | 字符向量
上下文菜单打开回调函数,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function。
Children
— 上下文菜单子级
空 GraphicsPlaceholder
数组 (默认) | Menu
对象的向量
上下文菜单子级,以空的 GraphicsPlaceholder
或 Menu
对象的向量形式返回。
不能使用 Children
属性添加或删除子级。可以使用此属性查看子级列表或对子菜单项重新排序。子级在此数组中的顺序与菜单项在打开的上下文菜单中出现的顺序相反。
例如,以下代码创建三个上下文菜单。当您在运行的 App 中打开上下文菜单时,Menu1
将作为第一个菜单选项出现。
fig = uifigure; cm = uicontextmenu(fig); m1 = uimenu(cm,'Text','Menu1'); m2 = uimenu(cm,'Text','Menu2'); m3 = uimenu(cm,'Text','Menu3'); fig.ContextMenu = cm;

cm.Children
以相反顺序返回菜单项列表。
cm.Children
ans = 3×1 Menu array: Menu (Menu3) Menu (Menu2) Menu (Menu1)
HandleVisibility
属性设置为 'off'
的对象不会列在 Children
属性中。
要向此列表添加子级,请将另一个 Menu
对象的 Parent
属性设置为此 ContextMenu
对象。
提示
要在运行的 App 中以交互方式显示一个上下文菜单,它必须:
有至少一个菜单项。
分配给同一图窗中的 UI 组件或图形对象。
要以编程方式打开一个上下文菜单,请使用
open
函数。上下文菜单必须为使用uifigure
函数创建的图窗的子级。要显示上下文菜单,它必须有至少一个用uimenu
函数创建的菜单项。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)