uimenu
创建菜单或菜单项
说明
m = uimenu
在当前图窗中创建菜单,并返回 Menu
对象。如果没有可用的图窗,MATLAB® 将调用 figure
函数创建一个图窗。
m = uimenu(
使用一个或多个名称-值对组参量指定菜单属性值。Name,Value
)
m = uimenu(
指定父容器和一个或多个属性值。parent
,Name,Value
)
示例
默认菜单栏中的菜单
创建一个显示默认菜单栏的图窗。添加一个菜单和一个菜单项。
f = figure('Toolbar','none'); m = uimenu('Text','Options'); mitem = uimenu(m,'Text','Reset');
具有键盘快捷方式和回调的菜单项
将具有键盘快捷方式的菜单项添加到菜单栏,并定义选择该菜单项时执行的回调。
首先,创建一个名为 importmenu.m
的程序文件。在该程序文件中:
创建一个图窗。
添加一个名为 Import 的菜单。通过将
'&Import'
指定为文本标签,为菜单创建助记键键盘快捷方式。创建一个菜单项并指定助记键和快捷键键盘快捷方式。
定义当用户点击菜单项或使用助记键或快捷键键盘快捷方式时执行的
MenuSelectedFcn
回调。
运行程序文件。
function importmenu fig = uifigure; m = uimenu(fig,'Text','&Import'); mitem = uimenu(m,'Text','&Text File'); mitem.Accelerator = 'T'; mitem.MenuSelectedFcn = @MenuSelected; function MenuSelected(src,event) file = uigetfile('*.txt'); end end
您可以使用键盘以下列方式与菜单和菜单项交互:
通过按 Alt+I 选择 Import 菜单。
选择 Text File 菜单项,并通过按 Alt+I+T 执行回调。
选择 Text File 菜单项,并通过使用快捷键 Ctrl+T 执行回调。
当您选择 Text File 菜单项时,“选择要打开的文件”对话框打开,扩展名字段限定为文本文件。
具有选中菜单项和共享回调的菜单
创建一个选中菜单项,可以选中或清除该菜单项以在坐标区上显示网格。共享具有普通按钮的回调,这样按下该普通按钮也可以显示或隐藏网格。
首先,创建一个名为 plotOptions.m
的程序文件。在该程序文件中:
创建一个图窗,其中包含一个普通按钮和用于显示网格的坐标区。
添加一个菜单和一个具有助记键的菜单项。指定该菜单项已选中。
定义一个
MenuSelectedFcn
回调,当用户与菜单项交互时该回调会隐藏或显示网格。定义一个
ButtonPushedFcn
,它与该菜单项使用相同的回调函数。
运行程序文件。
function plotOptions fig = uifigure; ax = uiaxes(fig); grid(ax); btn = uibutton(fig,'Text','Show Grid'); btn.Position = [155 325 100 20]; m = uimenu(fig,'Text','&Plot Options'); mitem = uimenu(m,'Text','Show &Grid','Checked','on'); mitem.MenuSelectedFcn = @ShowGrid; btn.ButtonPushedFcn = @ShowGrid; function ShowGrid(src,event) grid(ax); if strcmp(mitem.Checked,'on') mitem.Checked = 'off'; else mitem.Checked = 'on'; end end end
输入参数
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: m = uimenu('Text','Open')
创建菜单将其标签设置为 'Open'
。
注意
此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 Menu 属性。
Text
— 菜单标签
字符向量 | 字符串标量
菜单标签,指定为字符向量或字符串标量。此属性指定显示在菜单(或菜单项)上的标签。
避免使用以下区分大小写的保留字:'default'
、'remove'
和 'factory'
。如果必须使用保留字,请在单词前面指定反斜杠字符。例如,将 'default'
指定为 '\default'
。
您可以在标签文本中使用“与”(&) 字符来指定助记键盘快捷方式 (Alt+mnemonic
)。按下 Alt 键时,“与”符号后的字符在菜单中带下划线显示。您可以通过按住 Alt 键并键入显示的字符来选择菜单项。
要使用助记键,您必须为在 App 中定义的所有菜单和菜单项指定助记键。如果您只为部分菜单或菜单项定义助记键,按 Alt 键不会有任何效果。
下表显示了一些示例:
文本值 | 具有助记键提示的菜单标签 |
---|---|
'&Open Selection' | |
'O&pen Selection' | |
'&Save && Go' | |
Accelerator
— 键盘快捷方式
字符 | 字符串
键盘快捷方式,指定为一个字符或包含一个字符的字符串。使用此属性定义用于选择菜单项的键盘快捷方式。
示例: mitem.Accelerator = "H"
指定快捷键值后,用户可以通过按下字符和另一个键来选择菜单项,而不是用鼠标选择菜单项。按键顺序是针对特定平台的。
Windows® 系统:Ctrl+
accelerator
Macintosh 系统:Command+
accelerator
Linux® 系统:Ctrl+
accelerator
使用快捷键时要牢记的事项:
输入快捷键序列时,App 窗口必须已获得焦点。
快捷键不能用于顶级菜单。
仅当菜单项符合所有以下条件时,快捷键才能正常工作。
它不包含任何子菜单项。
它执行回调函数。
它的
Visible
属性设置为'on'
。其加速值尚未分配给同一 App 中的不同的活动菜单项。
MenuSelectedFcn
— 选定菜单时触发的回调函数
''
(默认) | 函数句柄 | 元胞数组 | 字符向量
选定菜单时触发的回调函数,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Specify a Callback Function。
此回调根据菜单项的位置和交互类型进行响应:
左键点击菜单将展开该菜单并触发其回调。
当任一菜单处于展开状态时,如果将光标在其他任何父级菜单(或顶级菜单)上暂停,将会展开该菜单并触发其回调。
注意
请勿使用回调动态更改菜单项。在回调中删除、添加和替换菜单项可能会生成空菜单。此时,可以使用 Visible
属性隐藏或显示菜单项。您还可以通过设置 Enable
属性来启用和禁用菜单项。要完全重新填充菜单项,请在回调外删除这些菜单项并重新创建。
与上下文菜单关联的菜单
当菜单组件与上下文菜单(而不是图窗窗口顶部的菜单项)相关联时,此回调函数可以访问有关用户与 App 交互的特定信息。MATLAB 将 MenuSelectedData
对象中的此信息作为第二个参量传递给回调函数。在 App 设计工具中,该参量名为 event
。您可以使用圆点表示法查询对象属性。例如,event.ContextObject
返回有关用户右键点击哪个组件以打开关联的上下文菜单的信息。
注意
您可以为任何 Menu
对象指定 MenuSelectedFcn
回调。但是,回调事件数据中的 MenuSelectedData
对象仅在菜单所属的上下文菜单满足以下两个条件时才可用:
上下文菜单与基于
uifigure
的 App 相关联(例如在 App 设计工具中创建的 App)。上下文菜单与 UI 组件(而不是图形对象,如
Axes
或Line
对象)相关联,或与仅包含 UI 组件的容器相关联。
下表列出了 MenuSelectedData
对象的属性。
属性 | 值 |
---|---|
ContextObject | App 用户打开上下文菜单时右键点击的对象 |
InteractionInformation | 有关 App 用户在组件中打开上下文菜单时右键点击的位置的信息。根据 例如,如果 |
Source | 执行回调的上下文菜单对象 |
EventName | 'MenuSelected' |
下表列出了 InteractionInformation
对象的属性。这些属性取决于 App 用户打开上下文菜单时右键点击的对象。
ContextObject | InteractionInformation 属性 | 值 |
---|---|---|
任一值 | Location | 用户右键点击的位置相对于
|
ScreenLocation | 用户右键点击的位置相对于其主显示画面左下角的位置,以
| |
Table | DisplayRow | 用户右键点击的在表中直观显示的行,以数值标量形式返回。 如果用户没有对表进行排序,则 |
DisplayColumn | 用户右键点击的在表中直观显示的列,以数值标量形式返回。 如果用户没有重新排列表,则 | |
Row | 用户右键点击的对应于原始表数据的行,以数值标量形式返回。 如果用户没有对表进行排序,则 | |
Column | 用户右键点击的对应于原始表数据的列,以数值标量形式返回。 如果用户没有重新排列表,则 | |
RowHeader | 用户是否右键点击了表的行标题,以逻辑值 0 (false ) 或 1 (true ) 形式返回。 | |
ColumnHeader | 用户是否右键点击了表的列标题,以逻辑值 0 (false ) 或 1 (true ) 形式返回。 | |
Tree | Node | 右键点击的节点,以 如果用户右键点击了树中未关联到节点的区域,则 |
Level | 所右键点击节点的级别,以数值标量形式返回。 如果用户右键点击了树中未关联到节点的区域,则 | |
ListBox | Item | 右键点击的列表框项的索引,以数值标量形式返回。 如果用户右键点击了列表框中与项无关的区域,则 |
Separator
— 分隔线模式
'off'
(默认) | on/off 逻辑值
分隔线模式,指定为 'off'
或 'on'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
将此属性设置为 'on'
会在菜单项上方绘制一条分隔线。
注意
当菜单项是顶级菜单项时,将忽略 Separator
属性。
Checked
— 菜单复选标记指示器
'off'
(默认) | on/off 逻辑值
菜单复选标记指示符,指定为 'off'
或 'on'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
将此属性设置为 'on'
会在相应菜单项旁边放置一个复选标记。将此属性设置为 'off'
可移除复选标记。可使用此功能显示启用或禁用应用程序功能的菜单项的状态。
注意
当菜单项是以下项时,将忽略 Checked
属性:
顶级菜单项
包含一个或多个子菜单项的菜单项
版本历史记录
在 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)