Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Menu 属性

控制基于 uifigure 的 App 中菜单的外观和行为

菜单在 App 窗口顶部显示选项的下拉列表。调用 uimenu 函数创建一个菜单,或者在现有菜单中添加一个子菜单。属性控制菜单的外观和行为。使用圆点表示法引用特定的对象和属性。

fig = uifigure;
m = uimenu(fig);
m.Text = 'Open Selection';

此处列出的属性对于 App 设计工具中的菜单或使用 uifigure 函数创建的 App 中的菜单有效。对于在 GUIDE 中使用的菜单或者在 figure 函数创建的 App 中使用的菜单,请参阅 Menu 属性

菜单

全部展开

菜单标签,指定为字符向量或字符串标量。此属性指定显示在菜单(或菜单项)上的标签。

避免使用以下区分大小写的保留字:“default”、“remove”和“factory”。如果必须使用保留字,请在单词前面指定反斜杠字符。例如,将“default”指定为 '\default'

您可以在标签文本中使用“与”(&) 字符来指定助记键盘快捷方式 (Alt+mnemonic)。按下 Alt 键时,“与”符号后的字符在菜单中带下划线显示。您可以通过按住 Alt 键并键入显示的字符来选择菜单项。

要使用助记键,您必须为在 App 中定义的所有菜单和菜单项指定助记键。如果您只为部分菜单或菜单项定义助记键,按 Alt 键不会有任何效果。

下表显示了一些示例:

文本值具有助记键提示的菜单标签
'&Open Selection'

'O&pen Selection'

'&Save && Go'

键盘快捷方式,指定为字符。使用此属性定义用于选择菜单项的键盘快捷方式。

示例: mitem.Accelerator = 'H'

指定快捷键值后,用户可以通过按下字符和另一个键来选择菜单项,而不是用鼠标选择菜单项。按键顺序是针对特定平台的。

  • Windows® 系统:Ctrl+accelerator

  • Macintosh 系统:Command+accelerator

  • Linux® 系统:Ctrl+accelerator

使用快捷键时要牢记的事项:

  • 输入快捷键序列时,App 窗口必须已获得焦点。

  • 快捷键不能用于顶级菜单。

  • 仅当菜单项符合所有以下条件时,快捷键才能正常工作。

    • 它不包含任何子菜单项。

    • 它执行回调函数。

    • 它的 Visible 属性设置为 'on'

分隔线模式,指定为 'off''on',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

将此属性设置为 'on' 会在菜单项上方绘制一条分隔线。

注意

当菜单项是顶级菜单项时,将忽略 Separator 属性。

菜单复选标记指示符,指定为 'off''on',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

将此属性设置为 'on' 会在相应菜单项旁边放置一个复选标记。将此属性设置为 'off' 可移除复选标记。可使用此功能显示启用或禁用应用程序功能的菜单项的状态。

注意

当菜单项是以下项时,将忽略 Checked 属性:

  • 顶级菜单项

  • 包含一个或多个子菜单项的菜单项

菜单标签颜色,指定为 RGB 三元组、十六进制颜色代码或下表中列出的颜色选项之一。

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#FF8800''#ff8800''#F80''#f80' 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

RGB 三元组十六进制颜色代码外观
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

交互性

全部展开

可见性状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示对象。

  • 'off' - 隐藏对象而不删除它。您仍然可以访问不可见 UI 组件的属性。

要使您的 App 更快地启动,请将不需要在启动时出现的所有 UI 组件的 Visible 属性设置为 'off'

工作状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 如果您将此属性设置为 'on',则 App 用户可以与组件进行交互。

  • 如果您将此属性设置为 'off',组件将灰显,指示 App 用户无法与其交互,并且它不会触发回调。

工具提示,指定为字符向量、字符向量元胞数组、字符串数组或一维分类数组。如果使用此属性,则在运行时当用户将指针悬停在组件上时,将显示消息。即使禁用组件,工具提示也会显示。要显示多行文本,请指定字符向量元胞数组或字符串数组。数组中的每个元素变为一行文本。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

上下文菜单,指定为使用 uicontextmenu 函数创建的 ContextMenu 对象。使用此属性可在您右键点击组件时显示上下文菜单。

回调

全部展开

选定菜单时触发的回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

此回调根据菜单项的位置和交互类型进行响应:

  • 左键点击菜单将展开该菜单并触发其回调。

  • 当任一菜单处于展开状态时,如果将光标悬停在其他任何父级菜单(或顶级菜单)上,将会展开该菜单并触发其回调。

注意

请勿使用回调动态更改菜单项。在回调中删除、添加和替换菜单项可能会生成空菜单。此时,可以使用 Visible 属性隐藏或显示菜单项。您还可以通过设置 Enable 属性来启用和禁用菜单项。要完全重新填充菜单项,请在回调外删除这些菜单项并重新创建。

有关编写回调的详细信息,请参阅在 App 设计工具中编写回调

对象创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅在 App 设计工具中编写回调

此属性指定要在 MATLAB 创建对象时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

对现有组件设置 CreateFcn 属性没有任何作用。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参数访问正在创建的对象。否则,使用 gcbo 函数访问该对象。

对象删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅在 App 设计工具中编写回调

此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参数访问要删除的对象。否则,使用 gcbo 函数访问该对象。

回调执行控件

全部展开

回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

此属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每当 MATLAB 调用回调时,回调都会试图中断正在运行的回调(如果存在)。运行中回调所属对象的 Interruptible 属性决定着是否允许中断。

  • 'on' 允许其他回调中断对象的回调。中断发生在 MATLAB 处理队列的下一个位置,例如当存在 drawnowfigureuifiguregetframewaitforpause 命令时。

    • 如果运行中回调包含以上命令之一,则 MATLAB 将在该时刻停止执行回调并执行中断回调。当中断回调完成时,MATLAB 将恢复执行运行中回调。

    • 如果运行中回调不包含以上命令之一,则 MATLAB 执行完当前回调,不会出现任何中断。

  • 'off' 阻止所有中断尝试。由中断回调所属的对象的 BusyAction 属性决定是放弃该中断回调还是将其放入队列中。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • Timer 对象根据排定时间执行,而不管 Interruptible 属性值如何。

发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

回调排队,指定为 'queue''cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

无论何时 MATLAB 调用回调,该回调都会试图中断运行中回调。运行中回调所属对象的 Interruptible 属性决定着是否允许中断。如果不允许中断,则中断回调所属对象的属性 BusyAction 将决定是放弃该回调还是将回调放入队列中。以下是 BusyAction 属性的可能值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

此属性为只读

删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

父级/子级

全部展开

父对象,指定为使用 uifigure 函数创建的 Figure 对象、另一个 Menu 对象或 ContextMenu 对象。您可以将菜单项移动到其他窗口,或者通过设置此属性将其移动到其他菜单下。将父容器指定为一个现有 Menu 对象,以将菜单项添加到菜单,或者嵌套菜单项。

菜单的子级,返回空的 GraphicsPlaceholder 或一维的 Menu 对象数组。

不能使用 Children 属性添加或删除子组件。可以使用此属性查看子级列表或对子菜单项重新排序。

要向此列表添加子菜单,请将另一个 Menu 对象的 Parent 属性设置为此 Menu 对象。

对象句柄的可见性,指定为 'on''callback''off'

此属性控制对象在其父级的子级列表中的可见性。当对象未显示在其父级的子级列表中时,通过搜索对象层次结构或查询属性来获取对象的函数不会返回该对象。这些函数包括 getfindobjclfclose。对象即使在不可见时也有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。

HandleVisibility 值说明
'on'对象始终可见。
'callback'对象对于回调或回调调用的函数可见,但对于命令行调用的函数不可见。此选项阻止通过命令行访问对象,但允许回调函数访问它。
'off'对象始终不可见。该选项用于防止另一函数无意中对 UI 进行更改。将 HandleVisibility 设置为 'off' 可在执行该函数时暂时隐藏对象。

标识符

全部展开

此属性为只读

图形对象的类型,以 'uimenu' 形式返回。

对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag 值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。

如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData 属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据

另请参阅

|

在 R2017b 中推出