Main Content

UIControl 属性

控制用户界面控件的外观和行为

用户界面控件是用户可与之交互的组件,如按钮和滑块。uicontrol 函数创建一个用户界面控件,并在显示它之前设置任何必需属性。通过更改属性值,可以修改用户界面控件的外观和行为。使用圆点表示法引用特定的对象和属性。

注意

App 设计工具或使用 uifigure 函数创建的 App 不支持创建 UIControl 对象。有关这些上下文中可用组件的列表,请参阅 App 构建组件

例如,以下代码创建一个按钮,将 UIControl 对象存储为 b,然后使用圆点表示法设置 Position 属性。

f = figure;
b = uicontrol(f,'Style','pushbutton');
b.Position = [100 100 50 20];

控件类型

全部展开

UIControl 的样式,指定为下表中的值之一。

样式值描述
'pushbutton'释放鼠标按键前显示为按下状态的按钮。
'togglebutton'可具有两种状态(未按下和按下)的按钮。每次点击切换按钮时,它的状态都会发生变化。
'checkbox'可具有两种状态(选中或取消选中)的复选框。当用户在其上点击并释放鼠标按键时,状态发生变化。
'radiobutton'可具有两种状态(选择和取消选择)的按钮。单选按钮在一组相关的单选按钮中有意安排为互斥。
'edit'可编辑的文本字段。
'text'静态文本字段。
'slider'用户沿水平或垂直栏按下的按钮。按钮的位置指示指定范围中的值。
'listbox'用户可从中选择一项或多项的项列表。与弹出式菜单不同,点击列表框时不会展开。
'popupmenu'孤立菜单,在点击它时,它将展开以显示选择列表。它处于折叠状态时,菜单显示当前选择。

当前值,指定为数字。Value 属性可用于查询或修改某些 uicontrol 的状态:

Uicontrol 的样式值属性的描述
'togglebutton'
  • 抬起:Value 属性等于 Min 属性的值。

  • 按下:Value 属性等于 Max 属性的值。

'checkbox'
  • 取消选中:Value 属性更改为 Min 属性的值。

  • 选中:Value 属性更改为 Max 属性的值。

'radiobutton'
  • 取消选择:Value 属性更改为 Min 属性的值。

  • 已选择:Value 属性更改为 Max 属性的值。

'slider'Value 属性等于对应的滑块控件的值。
'listbox'Value 属性等于与列表框中的选定项对应的数组索引。值 1 对应于列表中的第一个项目。
'popupmenu'Value 属性等于与弹出式菜单中的选定项对应的数组索引。值 1 对应于弹出式菜单中的第一项。

最大值,指定为数字。Max 属性影响某些 uicontrol 的表示形式:

Uicontrol 的样式值属性的描述
'togglebutton'按下切换按钮时,Value 属性更改为 Max 属性的值。
'checkbox'当选中复选框时,Value 属性更改为 Max 属性的值。
'radiobutton'当选择单选按钮时,Value 属性更改为 Max 属性的值。
'edit'

MaxMin > 1 时,编辑文本框接受多行输入。否则,编辑文本框接受单行输入。

MaxMin 的绝对值不影响可能的行数。只要差异大于 1,则编辑框可以包含任意行数。

'slider'Max 属性值是滑块控件的最大值,该值必须大于 Min 属性值。
'listbox'Max 属性值可帮助确定用户是否可同时选择列表框中的多个项目。如果 MaxMin > 1,则用户可以同时选择多个项目。否则,用户不能同时选择多个项目。如果设置 MaxMin 属性以允许多个选择,则 Value 属性值可以是索引向量。

最小值,指定为数字。Min 属性影响某些 uicontrol 的表示形式:

Uicontrol 的样式值属性的描述
'togglebutton'抬起切换按钮时,Value 属性更改为 Min 属性的值。
'checkbox'当取消选中复选框时,Value 属性更改为 Min 属性的值。
'radiobutton'当取消选择单选按钮时,Value 属性更改为 Min 属性的值。
'edit'

MaxMin > 1 时,编辑文本框接受多行输入。否则,编辑文本框接受单行输入。

MaxMin 的绝对值不影响可能的行数。只要差异大于 1,则编辑框可以包含任意行数。

'slider'Min 属性值是滑块控件的最小值,该值必须小于 Max 属性值。
'listbox'Max 属性值可帮助确定用户是否可同时选择列表框中的多个项目。如果 MaxMin > 1,则用户可以同时选择多个项目。否则,用户不能同时选择多个项目。如果设置 MaxMin 属性以允许多个选择,则 Value 属性值可以是索引向量。

滑块控件的步长,指定为数组 [minorstep majorstep]。此属性控制当用户点击箭头按钮或滑块槽(滑块滑道)时滑块值变化的幅度:

  • minorstep 是滑块范围的最小步长,当用户点击箭头按钮时,Value 属性将依此步长增加或减少。

  • majorstep 是滑块范围的最小步长,当用户点击滑块槽时,Value 属性按此比例增加或减少。

majorstep 值大于 1 时,滑块比例不超过 100%。

minorstepmajorstep 都必须大于 1e-6,而 minorstep 必须小于或等于 majorstep

majorstep 增大时,滑块指示符变长。当 majorstep 等于 1 时,滑块指示符是槽长的一半。对于大于 1majorstep 值,滑块指示符更大。

示例

此滑块的范围符合以下条件:MaxMin = 1。用户每按一下箭头按钮,滑块 Value 属性就更改 1%。当用户在滑块槽中点击时,该属性变化 10%。

s = uicontrol('Style','Slider','Min',0,'Max',1,'SliderStep',[0.01 0.10]);

列表框中顶部项的索引,指定为整数值。此属性仅适用于 UIControl 的列表框样式。此属性指定哪个项目显示在列表框中的最顶部位置,该列表框不够大,无法显示所有列表项。ListboxTop 值是您指定为 String 属性值的数组的索引。ListboxTop 值必须介于 1 和数组中的元素数之间。非整数值固定为下一最小整数。

注意

StringValue 属性可能覆盖 ListboxTop 属性,而不管所指定的 ListboxTop 值为何。ListboxTop 值可能随其他 UIControl 属性的值而变。例如,显式设置 Value 属性可将列表滚动到该值。

为获得最可靠的结果,请在 MATLAB® 在屏幕上绘制完用户界面控件后再查询或修改 ListboxTop 属性。

文本和样式

全部展开

要显示的文本,指定为字符向量、字符向量元胞数组、字符串数组、分类数组或以管道分隔的行向量。Style 属性指示您可以使用的数组格式。

样式属性支持的数组格式示例
'pushbutton'

字符向量


字符向量元胞数组


字符串数组


分类数组

'Option 1'


{'Option 1'}


"Option 1"


categorical({'Option 1'})

'togglebutton'
'checkbox'
'radiobutton'
'edit'
'text'
'listbox'

字符向量


字符向量元胞数组


字符串数组


分类数组


管道分隔的行向量

'One'


{'One','Two','Three'}


["One" "Two" "Three"]


categorical({'one','two','three'})


'One|Two|Three'

'popupmenu'

注意

如果为普通按钮、切换按钮、复选框或单选按钮指定元胞数组或分类数组,则 MATLAB 仅显示数组中的第一个元素。

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

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

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

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

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

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

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

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

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

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

注意

如果对列表框更改 ForegroundColor 的值,则 MATLAB 对所有列表框项目使用该颜色,但当前选定的列表框项目除外。对于所选项,MATLAB 使用的颜色可确保在所选项的文本和选择颜色之间形成鲜明对比。

示例: [0 0 1]

示例: 'b'

示例: 'blue'

数据类型: double | char

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

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

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

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

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

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

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

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

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

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

可选图标,指定为三维真彩色 RGB 值数组。数组中的值可以是:

  • 介于 0.01.0 之间的双精度值

  • 介于 0255 之间的 uint8

普通按钮和切换按钮是唯一完全支持 CDataUIControl 对象。如果为单选按钮或复选框指定 CData 属性,则图像可能与文本重叠。另外,为单选按钮或复选框指定图像会禁用在选择或取消选择它们时显示的功能。

数据类型: double | uint8

字体

全部展开

字体名称,指定为系统支持的字体名称或 'FixedWidth'。默认字体取决于具体操作系统和区域设置。

要使用在任何区域设置中都有较好显示效果的等宽字体,请指定 'FixedWidth'。使用的实际等宽字体取决于根对象的 FixedWidthFontName 属性。更改 FixedWidthFontName 属性会导致立即更新显示方式以使用新字体。

示例: 'Arial'

字体大小,指定为正数。FontUnits 属性指定单位。默认大小取决于系统。

示例: 12

示例: 12.5

字体粗细,指定为下表中的值之一。

  • 'normal' - 特定字体定义的默认粗细

  • 'bold' - 字符轮廓比普通字符粗

MATLAB 使用 FontWeight 属性从系统提供的字体中选择一种字体。并非所有字体都有加粗字体。因此,指定加粗字体仍可能得到普通字体。

注意

在 R2014b 中,'light''demi' 字体粗细值已被移除。如果指定其中任一值,则结果是正常字体粗细。

字体角度,指定为 'normal''italic'。MATLAB 根据此属性从系统上的可用字体中选择一种字体。将此属性设置为 'italic' 可选择字体的倾斜版本(如果系统上提供了该字体)。

注意

'oblique' 值已被删除。请改用 'italic'

字体单位,指定为下表中的值之一。

单位值描述
'points'磅。1 磅等于 1/72 英寸。
'normalized'归一化值,将字体大小指定为高度的一定比例。当您调整 UI 组件的大小时,MATLAB 会缩放显示的字体以保持该比例。
'inches'英寸。
'centimeters'厘米。
'pixels'

像素。

从 R2015b 开始,以像素为单位的距离不再依赖 Windows®Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux® 系统上,一个像素的大小由系统分辨率确定。

交互性

全部展开

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

  • 'on' - 显示对象。

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

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

用户界面控件的工作状态,指定为 'on''off''inactive'Enable 属性控制用户界面控件是否响应用户交互。以下是可能的值:

  • 'on' - 用户界面控件处于工作状态。

  • 'off' - 用户界面控件未处于工作状态,并且呈灰显。

  • 'inactive' - 用户界面控件未处于工作状态,但外观与 Enable 设置为 'on' 时相同。

工具提示,指定为字符向量、字符串标量或分类数组。如果使用此属性,则在运行时当用户将指针悬停在组件上时,将显示消息。禁用组件时,不显示工具提示。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

要创建多行文本,请使用 sprintf 函数在文本中插入换行符 ('\n')。例如:

txt = sprintf('Line 1\nLine 2');

然后将 Tooltip 属性设置为 sprintf 返回的值。

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

工具提示,指定为字符向量、字符串标量或分类数组。当您将鼠标悬停在 App 中的组件上时,会出现工具提示。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

注意

从 R2018b 开始,不推荐使用 TooltipString 属性。请改用 Tooltip 属性。

注意

Selected 属性的行为在 R2014b 中已经改变,不推荐使用。它对此类型的对象不会再产生任何影响。在以后的版本中可能会删除该属性。

注意

SelectionHighlight 属性的行为在 R2014b 中已经改变,不推荐使用。它对此类型的对象不会再产生任何影响。在以后的版本中可能会删除该属性。

位置

全部展开

位置和大小,指定为 [left bottom width height] 形式的四元素向量。此表介绍该向量中的每个元素。

元素描述
left父容器的内部左边缘与用户界面控件的外部左边缘之间的距离
bottom父容器的内部下边缘与用户界面控件的外部下边缘之间的距离
width用户界面控件的左右外侧边缘之间的距离
height用户界面控件的上下外侧边缘之间的距离

所有测量值都采用 Units 属性指定的单位。

注意

Position 值相对于父容器的可绘制区域。可绘制区域是指容器边框内的区域,不包括标题所占的区域。如果父容器是一个图窗,可绘制区域还不包括菜单栏和工具栏。

修改位置向量中的一个值

如果要更改 Position 向量中的一个值,可以结合使用圆点表示法和数组索引。例如,下面的代码将用户界面控件的宽度更改为 52

b = uicontrol;
b.Position(3) = 52;
b.Position
ans =

    20    20    52    20

位置和大小,指定为 [left bottom width height] 形式的四元素向量。所有测量值都采用 Units 属性指定的单位。

此属性值等同于 PositionOuterPosition 属性值。

位置和大小,指定为 [left bottom width height] 形式的四元素向量。所有测量值都采用 Units 属性指定的单位。

此属性值等同于 PositionInnerPosition 属性值。

此 属性 为只读。

外围矩形的大小,以四元素行向量形式返回。向量的前两个元素始终为零。第三和第四个元素分别是矩形的宽度和高度。所有测量值都采用 Units 属性指定的单位。

MATLAB 基于 String 属性值的大小和字体特征确定矩形的大小。要调整宽度和高度以适应 String 值的大小,请将 Position 宽度和高度值设置为略大于 Extent 的宽度和高度值。

对于属于单行文本的 String 值,Extent 属性的高度元素指示单行的高度。宽度元素指示最长线条的宽度,即使显示在控件上的文本换行时也是如此。对于多行文本,Extent 矩形包含所有文本行。如果 MaxMin > 1,则将可编辑的文本字段视为多行。

测量单位,指定为下表中的值之一。

单位值描述
'pixels'(默认值)

像素。

从 R2015b 开始,以像素为单位的距离不再依赖 Windows 和 Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux 系统上,一个像素的大小由系统分辨率确定。

'normalized'这些单位依据父容器进行归一化。容器的左下角映射到 (0,0),右上角映射到 (1,1)
'inches'英寸。
'centimeters'厘米。
'points'磅。1 磅等于 1/72 英寸。
'characters'

这些单位基于图形根对象的默认 uicontrol 字体:

  • 字符宽度 = 字母 x 的宽度。

  • 字符高度 = 两个文本行的基线之间的距离。

要访问默认的 uicontrol 字体,请使用 get(groot,'defaultuicontrolFontName')set(groot,'defaultuicontrolFontName')

MATLAB 从父对象的左下角测量所有单位。

此属性会影响 Position 属性。如果更改 Units 属性,请考虑在完成计算后将其值还原为默认值,以免影响采用默认值的其他函数。

指定 UnitsPosition 属性的顺序具有以下影响:

  • 如果您在 Position 属性之前指定 Units,则 MATLAB 会使用您指定的单位来设置 Position

  • 如果您在 Position 属性之后指定 Units 属性,则 MATLAB 会使用默认的 Units 来设置 position。然后,MATLAB 将 Position 值转换为以您指定的单位表示的等价值。

uicontrol 文本的对齐方式,指定为 'center''left''right'。此属性确定 String 属性文本的对齐方式。

HorizontalAlignment 属性仅影响 uicontrol 的 'text''edit' 样式。

回调

全部展开

主回调函数,指定为下列值之一:

  • 函数句柄。

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

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

此函数将执行以响应用户交互,例如普通按钮点击、滑块移动或复选框选中。仅当 UIControl 对象的 Enable 属性设置为 'on' 时,此函数才能执行。

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

数据类型: function_handle | cell | char

按下鼠标按键回调函数,指定为下列值之一:

  • 函数句柄。

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

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

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

ButtonDownFcn 回调是当用户在 UI 组件上点击鼠标按键时执行的函数。回调在以下情形下执行:

  • 用户右键点击 UI 组件,并且 Enable 属性设置为 'on'

  • 用户右键点击或左键点击 UI 组件,并且 Enable 属性设置为 'off''inactive'

按键回调函数,指定为下列值之一:

  • 函数句柄。

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

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

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

UIControl 对象获得焦点并且用户按下键时执行该回调函数。如果您没有为该属性定义函数,则MATLAB 向父图窗传递按键操作。重复按键操作会保留 UIControl 对象的焦点,并在每次发生按键操作时执行该函数。如果用户几乎在同一时间按下多个键,MATLAB 将检测最后一个按键的按键操作。

如果将该属性指定为函数句柄(或包含函数句柄的元胞数组),则 MATLAB 会将包含回调数据的对象作为第二个参量传递给回调函数。该对象包含下表中介绍的属性。您可以使用圆点表示法访问回调函数内的这些属性。

属性

描述

示例:

a

=

Shift

Shift-a

Character作为按下一个或多个键的结果显示的字符。字符可能为空或无法打印。'a''=''''A'
Modifier包含按下的一个或多个修改键(例如 CtrlAltShift)名称的元胞数组。{1x0 cell}{1x0 cell}{'shift'}{'shift'}
Key按下的键,通过键上的(小写字母)标签或文本描述标识。'a''equal''shift''a'
Source当用户按下该键时获取焦点的对象。UIControl 对象UIControl 对象UIControl 对象UIControl 对象
EventName导致回调函数执行的操作。'KeyPress''KeyPress''KeyPress''KeyPress'

按修改键会以下列方式影响回调数据:

  • 修改键可影响 Character 属性,但不会更改 Key 属性。

  • 特定键以及使用 Ctrl 修饰的键会在 Character 属性中放置无法打印的字符。

  • CtrlAltShift 以及其他几个键不会生成 Character 属性数据。

您还可以查询图窗的 CurrentCharacter 属性以确定用户按下的字符。

释放键回调函数,指定为下列值之一:

  • 函数句柄。

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

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

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

UIControl 对象获得焦点并且用户释放键时执行该回调函数。

如果将该属性指定为函数句柄(或包含函数句柄的元胞数组),则 MATLAB 会将包含回调数据的对象作为第二个参量传递给回调函数。该对象包含下表中介绍的属性。您可以使用圆点表示法访问回调函数内的这些属性。

属性

描述

示例:

a

=

Shift

Shift-a

Character

已释放的键的字符解释。

'a''=''''A'
Modifier

当前修改键(例如,'control')或空元胞数组(如果没有修改键)。

{1x0 cell}{1x0 cell}{1x0 cell}{1x0 cell}
Key

释放的键的名称,通过键上的小写字母标签或文本描述标识。

'a''equal''shift''a'
Source当用户按下该键时获取焦点的对象。UIControl 对象UIControl 对象UIControl 对象UIControl 对象
EventName导致回调函数执行的操作。'ase''ase''ase''ase'

按修改键会以下列方式影响回调数据:

  • 修改键可影响 Character 属性,但不会更改 Key 属性。

  • 特定键以及使用 Ctrl 修饰的键会在 Character 属性中放置无法打印的字符。

  • CtrlAltShift 以及其他几个键不会生成 Character 属性数据。

您还可以查询图窗的 CurrentCharacter 属性以确定用户按下的字符。

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

  • 函数句柄。

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

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

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

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

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

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

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

  • 函数句柄。

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

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

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

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

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

回调执行控件

全部展开

回调中断,指定为 '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 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution

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

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

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

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

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

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

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

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

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

有关演示 BusyActionInterruptible 属性如何影响程序行为的示例,请参阅Interrupt Callback Execution

此 属性 为只读。

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

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

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

是否能够成为当前对象,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 当用户点击正在运行的 App 中的组件时,将当前对象设置为 UIControlFiguregco 函数的 CurrentObject 属性都返回 UIControl 作为当前对象。

  • 'off' - 当用户点击正在运行的 App 中的组件时,从 UIControl 的前代中找到 HitTest 设置为 'on' 的最近前代并将当前对象设置为该前代。

父级/子级

全部展开

父对象,指定为 FigurePanelButtonGroupTab 对象。使用此属性可在创建 UI 组件时指定父容器,或将现有 UI 组件移动到其他父容器中。

UIControl 子级,以空数组形式返回。UIControl 对象没有子级。设置此属性不会产生任何影响。

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

此属性控制 UIControl 句柄在其父级的子级列表中的可见性。当句柄未显示在其父对象的子对象列表中时,通过搜索对象层次结构或查询句柄属性获取句柄的函数不会返回该句柄。这些函数包括 getfindobjgcagcfgconewplotclaclfcloseHandleVisibility 属性还控制对象句柄是否显示在父图窗的 CurrentObject 属性中。句柄即使在不可见时也仍有效。如果您知道对象的句柄,可以对其属性执行 set 和 get 操作并将句柄传递给处理句柄的任何函数。

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

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

注意

请勿尝试访问由 uibuttongroup 管理的按钮组外部的单选按钮和切换按钮。将这些单选按钮和切换按钮的 HandleVisibility 设置为 'off' 可防止意外访问。

标识符

全部展开

此 属性 为只读。

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

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

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

版本历史记录

在 R2006a 之前推出

全部展开