Main Content

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

Table 属性

控制基于 figure 的 App 中表 UI 组件的外观和行为

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

表 UI 组件在 App 中显示数据的行和列。uitable 函数创建一个表 UI 组件并在显示前为其设置所有必需的属性。通过更改属性值,您可以修改按钮外观和行为的某些方面。使用圆点表示法引用特定的对象和属性。

f = figure;
t = uitable(f,'Data',[1 2 3; 4 5 6; 7 8 9]);
t.FontSize = 9;

全部展开

表数据,指定为数值数组、逻辑数组或元胞数组。表数据可以是任何数值类型、logicalchar。使用元胞数组可指定不同数据类型的混合。

表数据以 ColumnFormat 属性指定的格式显示。如果表数据的数据类型与 ColumnFormat 属性的值不匹配,MATLAB® 会转换数据或显示警告。有关详细信息,请参阅 ColumnFormat 属性说明。

要避免在用户输入无效数据时可能出现的警告,请编写 CellEditCallback 函数以将该数据转换为正确的类型。

如果 Data 属性数组中的行数与 RowName 数组中的元素数不匹配,则生成表中的行数是这两个值中的较大者。当 ColumnName 属性与 Data 属性数组中的列数不匹配时,同样如此。

示例: t = uitable('Data',rand(10,3))

示例: t = uitable('Data',{'blue' 5 true; 'orange' 25 false})

列标题名称,指定为下列值之一:

  • 'numbered' - 列标题是从 1 开始的有序数字。

  • 字符向量元胞数组或分类数组 - 数组的每个元素都变为列名。如果指定 1×n 元胞数组,则 MATLAB 将以一个 n×1 元胞数组形式存储并返回该值。如果您指定 m×n 数组,MATLAB 将数组重构为列向量。通过在列名称中包含一个竖线 (|) 来指定多行列名称。例如,值 'Telephone|Number' 生成一个在单词“Telephone”和“Number”之间有一个换行符的列标题。

  • 空元胞数组 ({}) - 表没有任何列标题。

  • 空矩阵 ([]) - 表没有任何列标题。

如果 Data 属性数组中的列数与 ColumnName 数组中的元素数不匹配,则生成表中的列数是这两个值中的较大者。

示例: t = uitable('ColumnName',{'Name'; 'Number'},'Data',{'Bob' 5})

示例: t = uitable('ColumnName',{'Name'; []},'Data',{'Bob' 5})

示例: t = uitable('ColumnName',{'Name'; 'Telephone|Number'},'Data',{'Bob','555-1212'})

表列的宽度,指定为 'auto'1×n 元胞数组。

元胞数组中的每一列都与表中的一列对应。这些值以像素为单位。如果指定 'auto',则 MATLAB 使用多个因子自动计算列宽,其中一个因子是 ColumnName 属性值。

可以将固定列宽和 'auto' 列宽组合在元胞数组中,也可以指定单个值 'auto' 以使所有列宽都是自动设置。

在表属性编辑器中选择自动宽度与将 ColumnWidth 属性设置为 'auto' 的效果相同。

示例: t = uitable('ColumnWidth','auto','Data',[1 2 3; 4 5 6])

示例: t = uitable('ColumnWidth',{64 60 40},'Data',[1 2 3; 4 5 6])

示例: t = uitable('ColumnWidth',{64 'auto' 40},'Data',[1 2 3; 4 5 6])

编辑列单元格的功能,指定为:

  • 空逻辑数组 ([]) - 没有可编辑的列。

  • 逻辑 1×n 数组 - 此数组指定哪些列是可编辑的。n 的值等于表中的列数。数组中的每个值对应于一个表列。数组中的值 true 将使该列中的单元格可编辑。值 false 将使该列中的单元格不可编辑。

  • 逻辑标量 - 整个表可编辑或不可编辑。

示例: t = uitable('Data',rand(10,3),'ColumnEditable',[false true true])

示例: t = uitable('Data',rand(10,3),'ColumnEditable',false)

包含复选框或弹出式菜单的表列必须可编辑,以便用户可以与这些控件交互。

单元格显示格式,指定为空元胞数组或 1×n 字符向量元胞数组。

此属性确定每列中数据的显示方式,以及在 UI 上编辑这些数据的约束。元胞数组的元素对应于 Data 属性数组中的列。如果您不希望指定特定列的显示格式,请为该列指定 []。如果不指定列的格式,则 MATLAB 根据单元格中数据的类型确定默认显示方式。

元胞数组的元素必须是下表介绍的值之一。

单元格格式值

说明

'char'

显示左对齐值

要编辑单元格,用户可键入文本以替换现有值。

如果 Data 属性数组中的元素是逻辑值,则 truefalse 显示在表中。

'logical'

显示复选框。

要编辑单元格,用户可选中或清除复选框。然后,MATLAB 将相应的 Data 值设置为 truefalse

ColumnEditable 属性值必须为 true,才能允许用户选中或取消选中复选框。

最初,当对应的 Data 值为 true 时选中一个复选框。Data 属性数组中的对应值的类型必须为 logical 以确保数据正确显示在表中。

'numeric'

显示与数值数据的命令行窗口显示等效的右对齐值。如果 Data 属性数组中的元素是逻辑值,则 10 显示在表中。如果 Data 属性数组中的元素既非数值也非逻辑值,则 NaN 显示在表中。

要编辑单元格,用户可以输入任何文本。

如果用户输入表示常量(如 pi)的文本,您可以对 CellEditCallback 函数进行编码以将该值转换为等同的数值。在此情况下,MATLAB 先尝试将用户输入的文本转换为数值,并将其存储在 Data 属性中。随后将执行 CellEditCallback 函数。有关示例,请参阅 CellEditCallback 说明。

1×n 字符向量元胞数组,如 {'one' 'two' 'three'}

显示弹出式菜单。

要编辑单元格,用户可从弹出式菜单中选择项目。MATLAB 设置选定菜单项对应的 Data 属性数组值。ColumnEditable 属性值必须为 true,才能允许用户选择弹出式菜单中的项目。

format 函数接受的格式名称,例如:'short''long'

使用指定格式显示 Data 属性值。

弹出式菜单 ColumnFormat 和各种数据类型的效果

如果 ColumnFormat 值定义弹出式菜单,则初始 Data 值不必是该菜单中的选项之一。初始 Data 值将一直显示,直到用户进行不同的选择。

例如,假设给定列的 Data 属性值对于所有行都是 'Choose',并且 ColumnFormat 值指定具有选项 'group 1''group 2' 的弹出式菜单。当 MATLAB 创建表时,这些表单元格会显示 'Choose',直到用户选择弹出式菜单中的某个项为止:

f = figure;
myData = {'Andrew' 31 'Male' 'Choose'; ...
          'Bob' 41 'Male' 'Choose';  ...
          'Anne' 20 'Female' 'Choose';};
t = uitable('Parent', f,...
            'Position', [25 25 334 78],...            
            'ColumnFormat',({[] [] [] {'group 1' 'group 2'}}),... 
            'ColumnEditable', true,...
            'Data', myData);

可编辑列的日期显示

此表介绍各种数据类型如何显示特定 ColumnFormat 值。

 ColumnFormat
'numeric''char''logical'
数据数组值的数据类型任意数值类型表按原样显示数字。MATLAB 将值转换为文本并使其在表中左对齐显示。如果 MATLAB 不能转换该值,则显示 NaN不推荐。MATLAB 可能在用户编辑单元格时返回警告,除非您定义 CellEditCallback 函数。
char表按右对齐显示值,就像数字一样。表按原样显示值。不推荐。MATLAB 可能在用户编辑单元格时返回警告,除非您定义 CellEditCallback 函数。
logical表以数字形式显示逻辑值。MATLAB 可能在用户编辑单元格时返回警告,除非您定义 CellEditCallback 函数。表显示左对齐的 'true''false' 形式的逻辑值。除非您定义了 CellEditCallback 函数,否则 MATLAB 可能在您编辑单元格时返回警告。表显示复选框形式的逻辑值。

例如在下表中,第一列 (X-Data) 左对齐,这是因为该列的 ColumnFormat 值为 'char'

行标题功能,指定为下列值之一:

  • 'numbered' - 行标题是从 1 开始的有序数字。

  • 字符向量元胞数组或分类数组 - 数组的每个元素都变为行名。行名限制为单行文本。如果指定 1×n 元胞数组,则 MATLAB 将以一个 n×1 元胞数组形式存储并返回该值。如果您指定 m×n 数组,MATLAB 将数组重构为列向量。

  • 空元胞数组 ({}) - 表没有任何行标题。

  • 空矩阵 ([]) - 表没有任何行标题。

如果 Data 属性数组中的行数与 RowName 数组中的元素数不匹配,则生成表中的行数是这两个值中的较大者。

示例: t = uitable('RowName',{'Name';'Number'},'Data',{'Bob';5})

示例: t = uitable('RowName',{'Name';[]},'Data',{'Bob';5})

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

此属性提供了一种方法,让用户可通过点击并拖动列标题来重新排序表列(而非标签)。

注意

重新排列 UI 中的表列不会影响 Data 属性数组中的列。

字体

全部展开

字体名称,指定为系统支持的字体名称或 '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 属性控制 UI 组件是否响应按钮点击。有三个可能的值:

  • 'on' - UI 组件处于工作状态。

  • 'off' - UI 组件未处于工作状态,并且呈灰显。

  • 'inactive' - UI 组件未处于工作状态,但外观与 Enable 设置为 'on' 时相同。

Enable 属性的值和按钮点击的类型共同确定 UI 的响应方式。

启用值响应左键点击响应右键点击
'on'

执行 CellSelectionCallback 函数(仅适用于表单元格,不适用于标题单元格)。Indices 属性在 MATLAB 传递给回调函数的回调数据对象中更新。

  1. 执行图窗的 WindowButtonDownFcn 回调。

  2. 执行 ButtonDownFcn 回调。

'off''inactive'

  1. 执行图窗的 WindowButtonDownFcn 回调。

  2. 执行 ButtonDownFcn 回调。

  1. 执行图窗的 WindowButtonDownFcn 回调。

  2. 执行 ButtonDownFcn 回调。

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

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

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

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

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

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

注意

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

注意

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

注意

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

颜色和样式

全部展开

单元格文本颜色,指定为 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'

背景色,指定为 RGB 三元组或由 RGB 三元组组成的 m×3 矩阵。RGB 三元组是行向量,用于指定颜色的红、绿和蓝分量的强度。强度必须处于范围 [0,1] 中。颜色名称无效。

当您希望表中各行按某种重复模式使用 m 种不同颜色进行着色时,请指定 m×3 矩阵。矩阵的每一行都必须是一个 RGB 三元组。当 RowStriping 属性为 'on' 时,MATLAB 使用矩阵的行。除非两个 RowStriping 均为 'on'BackgroundColor 为 m×3 矩阵,否则不会对表背景隔行着色。

示例: t = uitable('Data',rand(10,3),'BackgroundColor',[0.85 0.85 1])

示例: t = uitable('Data',rand(10,3),'BackgroundColor',[1 1 1 ;0.85 0.85 1])

下表列出了某些颜色的 RGB 三元组。

颜色RGB 三元组
黄色[1 1 0]
品红色[1 0 1]
青蓝色[0 1 1]
红色[1 0 0]
绿色[0 1 0]
蓝色[0 0 1]
白色[1 1 1]
黑色[0 0 0]

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

此属性控制表行的着色模式。当 RowStriping 值设置为 'on' 时,BackgroundColor 矩阵指定行的颜色以某种重复模式显示。如果 BackgroundColor 矩阵只有一行,则所有表行的着色都相同。

RowStriping 设为 'off' 时,BackgroundColor 矩阵中的第一个颜色定义表中所有行的着色。

位置

全部展开

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

元素说明
left父容器的内部左边缘与表的外部左边缘之间的距离
bottom父容器的内部下边缘与表的外部下边缘之间的距离
width表的左右外部边缘之间的距离
height表的上下外部边缘之间的距离

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

注意

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

使用 Extent 属性可为表确定适合数据的大小。将 Position 属性的 widthheight 设置为 Extent 属性的宽度和高度。注意,如果表具有较大范围,执行此操作会导致表扩展到其父容器的右侧或顶部边缘以外。

示例:设置宽度和高度以适应数据大小

如果要更改 Position 向量中的一个或两个连续值,可以结合使用圆点表示法和数组索引。例如,下面的代码设置表的宽度和高度以便与表的 Extent 匹配:

t = uitable('Data',rand(10,3));
t.Position(3:4) = t.Extent(3:4);

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

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

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

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

此属性为只读

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

MATLAB 基于当前 DataRowNameColumnName 属性值确定矩形的大小。MATLAB 使用列和行宽度估计宽度和高度值。估计范围可以大于图窗。

指定 Position 属性的宽度和高度值时,可以考虑使用 Extent 属性值。

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

单位值说明
'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 值转换为以您指定的单位表示的等价值。

回调

全部展开

单元格编辑回调函数,指定为下列值之一:

  • 函数句柄。

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

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

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

当用户更改表单元格的内容时,将执行此函数。可使用此回调函数执行计算或验证用户输入。

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

属性

说明

Indices

包含用户编辑的单元格的行和列索引的 1×2 数组。

PreviousData

上一单元格数据。默认值为空矩阵 []

EditData

用户输入的值。

NewData

MATLAB 写入 Data 属性数组的值。此值与 EditData 相同,或者是转换后的值。

如果 MATLAB 在用户输入的数据中检测到错误,则 NewData 属性为空。

Error

如果 MATLAB 在用户输入的数据中检测到错误,会返回错误消息。

当 MATLAB 成功将值写入 Data 属性时,Error 属性为空。

如果 Error 属性不为空,则 CellEditCallback 可以显示消息,也可以尝试修复该问题。

Source

正在执行 CellEditCallback 函数的表对象。

EventName

'CellEdit'

当用户编辑表单元格时,MATLAB 执行以下步骤:

  1. 尝试将新值存储到该表的 Data 属性中

  2. 调用 CellEditCallback 函数(如果存在)

如果值导致错误,且没有任何 CellEditCallback 函数,则单元格数据会还原为以前的值,并且不会显示任何错误。

示例:计算用户输入

此示例演示如何创建一个回调函数以计算数值表单元格中的用户输入的数据。将此代码粘贴到编辑器中,然后运行它以查看它的工作方式。

function myui
    f = figure;
    myData = { 'A '  31; 'B'  41; 'C'  5; 'D' 2.6};
    t = uitable('Parent',f,...
                'Position', [25 25 700 200], ...
                'Data',myData,...
                'ColumnEditable', [false true], ...
                'CellEditCallback',@converttonum);
        function converttonum(hObject,callbackdata)
             numval = eval(callbackdata.EditData);
             r = callbackdata.Indices(1)
             c = callbackdata.Indices(2)
             hObject.Data{r,c} = numval; 
        end
end

当您运行 myui 时,可以更改表的第二列中的值。作为响应,将执行 converttonum 回调函数。converttonum 函数使用 eval 函数计算您的输入。然后,它将单元格数据设置为 numval 的值。例如,如果您输入 pi1+1converttonum 函数将表元胞值设置为输入的数值表示形式。因为签入 converttonum 函数时没有任何错误,所以无效的表达式返回错误,并且表单元格的新值变为 NaN

单元格选择回调函数,指定为下列值之一:

  • 函数句柄。

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

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

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

当用户执行下列操作之一时执行该回调函数:

  • 通过点击数据单元格或使用箭头键导航到该单元格来高亮显示它(非行或列标题元胞)

  • 通过在选择单元格时按住 Shift 键来选择矩形元胞组

  • 按住 Ctrl 并点击单元格可取消选择该单元格

如果将此属性指定为函数句柄(或包含函数句柄的元胞数组),则 MATLAB 会将包含事件数据的 CellSelectionChangeData 对象作为第二个参数传递给回调函数。此对象包含下表中列出的属性。

属性

说明

Indices

包含用户选择的单元格的行和列索引的 n×2 数组。

Source

正在执行 CellSelectionCallback 函数的表对象。

EventName

'CellSelection'

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

  • 函数句柄。

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

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

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

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

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

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

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

  • 函数句柄。

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

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

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

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

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

属性

说明

示例:

a

=

Shift

Shift-a

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

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

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

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

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

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

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

  • 函数句柄。

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

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

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

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

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

属性

说明

示例:

a

=

Shift

Shift-a

Character

已释放的键的字符解释。

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

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

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

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

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

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

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

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

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

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

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

  • 函数句柄。

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

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

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

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

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

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

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

  • 函数句柄。

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

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

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

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

回调排队,指定为 '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 属性的值,以确认它不是待删除项。

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

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

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

父级/子级

全部展开

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

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

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

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

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

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

标识符

全部展开

此属性为只读

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

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

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

兼容性考虑

全部展开

从 R2020a 起不建议使用

在 R2008a 中推出