Main Content

本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。

Menu 属性

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

此处列出的属性对 GUIDE 中的或使用 figure 函数创建的 App 中的菜单有效。如果您正在使用 App 设计工具或 uifigure 函数,请参阅 Menu 属性。有关详细信息,请参阅GUIDE 迁移策略

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

f = figure;
m = uimenu(f);
m.Text = 'Open Selection';

菜单

全部展开

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

避免使用以下区分大小写的保留字:“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'

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

注意

不推荐使用 Label 属性。在以后的版本中可能会删除该属性。请改用 Text 属性。

相对的菜单位置,指定为整数标量值。Position 属性的值指示在菜单栏上或菜单中的位置。顶级菜单根据其 Position 属性的值按从左到右的顺序显示在菜单栏上,其中 1 表示最左侧的位置。给定菜单中的各菜单项根据其 Position 属性的值按从上到下的顺序显示,其中 1 表示最顶部的位置。

注意

不推荐使用 Position 属性。在以后的版本中可能会删除该属性。要更改菜单项的顺序,请改用 Children 属性或 uistack 函数。

交互性

全部展开

可见性状态,指定为 '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 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

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

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

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

注意

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

组件创建函数,指定为下列值之一:

  • 函数句柄。

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

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

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

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

可在您的 CreateFcn 代码中使用 gcbo 函数获取要创建的组件对象。

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

组件删除函数,指定为下列值之一:

  • 函数句柄。

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

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

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

DeleteFcn 属性指定要在 MATLAB 删除组件时(例如,当用户关闭窗口时)执行的回调函数。MATLAB 会在销毁组件对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

可在您的 DeleteFcn 代码中使用 gcbo 函数获取要删除的组件对象。

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

  • 函数句柄。

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

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

注意

不推荐使用 Callback 属性。在以后的版本中可能会删除该属性。请改用 MenuSelectedFcn

回调执行控件

全部展开

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

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

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

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

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

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

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

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

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

注意

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

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

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

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

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

有关演示 InterruptibleBusyAction 属性如何影响程序行为的示例,请参阅中断回调执行

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

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

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

中断回调的来源的 BusyAction 属性决定 MATLAB 如何处理其执行。BusyAction 属性具有下列值:

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

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

无论何时 MATLAB 调用回调,该回调都会试图中断正在执行的回调。运行中回调所属对象的 Interruptible 属性确定是否允许回调。如果 Interruptible 设置为:

  • on - 在下一个时间点(MATLAB 处理队列时)发生中断。这是默认设置。

  • off - BusyAction 属性(中断回调所属对象的属性)确定 MATLAB 是将中断回调纳入队列还是将其忽略。

有关演示 BusyActionInterruptible 属性如何影响程序行为的示例,请参阅中断回调执行

此属性为只读

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

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

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

此属性对此类型的对象没有影响。

父级/子级

全部展开

此属性为只读

父对象,指定为 FigureContextMenuMenu 对象。您可以将菜单项移动到其他窗口,或者通过设置此属性将其移动到其他菜单下。

菜单的子级,返回空的 GraphicsPlaceholder 或一维的 Menu 对象数组。菜单的子级是作为子菜单的其他菜单。

不能使用 Children 属性添加或删除子级。可以使用此属性查看子级列表或对子菜单项重新排序。子级在该数组中的顺序反映了显示的菜单项的顺序。

要向该列表中添加子级,请将子组件的 Parent 属性设置为 Menu 对象。

HandleVisibility 属性设置为 'off' 的对象不会列在 Children 属性中。

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

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

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

可以将图形根的 ShowHiddenHandles 属性设置为 'on' 以使所有句柄可见,而不管其 HandleVisibility 值如何。此设置对其 HandleVisibility 值没有任何影响。

标识符

全部展开

此属性为只读

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

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

用户数据,指定为任何数组。指定 UserData 对在 App 内共享数据很有用。有关详细信息,请参阅在回调之间共享数据

另请参阅

在 R2006a 之前推出