Main Content

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

uitable

创建表用户界面组件

说明

uit = uitable 在当前图窗中创建表用户界面组件,并返回 Table UI 组件对象。如果没有可用的图窗,MATLAB® 将调用 figure 函数创建一个图窗。

uit = uitable(Name,Value) 使用一个或多个名称-值对组参数指定表 UI 组件的属性值。

示例

uit = uitable(parent) 在指定的父容器中创建表。父容器可以是使用 figureuifigure 函数创建的图窗,也可以是子容器(如面板)。uitable 的属性值略有不同,具体取决于该 App 是使用 figure 还是 uifigure 函数创建的。有关详细信息,请参阅名称-值对组参数

示例

uit = uitable(parent,Name,Value) 指定父容器和一个或多个属性值。

示例

全部折叠

从 R2018a 开始,您可以在表 UI 组件中显示 table 数组数据。(仅当表 UI 组件位于使用 uifigure 函数创建的图窗中时,才支持此类型的数据。App 设计工具使用此类型的图窗来创建 App。)

通过调用 readtable 函数从文件中读取数据来创建表数组 t。从 t 中选择四个变量和 15 个行。

t = readtable('patients.xls');
vars = {'Age','Systolic','Diastolic','Smoker'};
t = t(1:15,vars);

创建一个表 UI 组件,并将 t 指定为数据。

fig = uifigure;
uit = uitable(fig,'Data',t);

A table with four columns: "Age", "Systolic", "Diastolic", and "Smoker". The table is populated with data. The data in the "Smoker" column appears as checked or unchecked boxes.

在表 UI 组件中显示并以编程方式更新 table 数组数据。(仅当表 UI 组件位于使用 uifigure 函数创建的图窗中时,才支持此类型的数据。App 设计工具使用此类型的图窗来创建 App。)

通过从文件中读入海啸数据来创建一个表数组,并在表 UI 组件中显示部分数据。

t = readtable('tsunamis.xlsx');
vars = {'Year','MaxHeight','Validity'};
t = t(1:20,vars);
fig = uifigure;
uit = uitable(fig,'Data',t);

A table with three columns of tsunami data: the year of the tsunami, the maximum tsunami height in meters, and the validity of the tsunami (for example, "questionable tsunami" or "definite tsunami").

通过编辑 UI 表的 Data 属性,更新第一行中发生海啸的可能性。

uit.Data.Validity(1) = {'definite tsunami'};

A table with tsunami year, maximum height, and validity. The entry in the first row has a Validity value of "definite tsunami".

通过访问和修改 MaxHeight 列中的数据,将最大高度数据从米转换为英尺。

uit.Data.MaxHeight = uit.Data.MaxHeight*3.281;

A table with tsunami year, max height, and validity. The values in the MaxHeight column are in feet.

创建一个 App,它允许用户对表数据进行排序和编辑,并在数据发生变化时更新数据可视化。(仅当表 UI 组件位于使用 uifigure 函数创建的图窗中时,才支持交互列排序。App 设计工具使用此类型的图窗来创建 App。)

首先,创建一个名为 tsunamisData.m 的程序文件。在该程序文件中:

  • 通过调用 readtable 函数创建一个 table 数组。

  • 创建一个 UI 图窗。

  • 创建一个可排序且可编辑的表 UI 组件以在图窗中显示。将 table 数组存储到组件的 Data 属性中。

  • 创建一个气泡图来可视化海啸数据,其中气泡的坐标表示海啸的纬度和经度,气泡的大小表示海啸的最大高度。

  • 指定一个 DisplayDataChangedFcn 回调,当 App 用户在表 UI 组件中对列进行排序或编辑单元格时,该回调使用 DisplayData 属性更新气泡图。

function tsunamisData
    % Create table array
    t = readtable('tsunamis.xlsx');
    vars = {'Latitude','Longitude','MaxHeight'};
    t = t(1:20,vars);

    % Create UI figure
    fig = uifigure;
    fig.Position(3:4) = [722 360];

    % Create table UI component
    uit = uitable(fig);
    uit.Data = t;
    uit.ColumnSortable = true;
    uit.ColumnEditable = [false false true];
    uit.Position(3) = 290;
    uit.DisplayDataChangedFcn = @updatePlot;

    % Create bubble chart
    ax = uiaxes(fig);
    ax.Position(1) = 315;
    ax.XLabel.String = 'Longitude';
    ax.YLabel.String = 'Latitude';
    x = t.Longitude;
    y = t.Latitude;
    sz = t.MaxHeight;
    bubblechart(ax,x,y,sz)

        % Update the bubble chart when table data changes
        function updatePlot(src,event)
            t = uit.DisplayData;
            x = t.Longitude;
            y = t.Latitude;
            sz = t.MaxHeight;
            bubblechart(ax,x,y,sz)
        end

end

An app with a table displaying the Latitude, Longitude, and MaxHeight data for a number of tsunamis, and a bubble chart of the table data. The bubble chart plots the location of the tsunamis with Longitude on the x-axis, Latitude on the y-axis, and bubble size given by MaxHeight.

当您将鼠标悬停在标题上时,可排序的列会在标题中显示箭头。按海啸的最大高度对表进行排序。

The MaxHeight column of the tsunami data table is sorted in ascending order. The user's mouse cursor is on the MaxHeight column header, where an arrow pointing up is displayed next to the header text.

首先双击表单元格,然后输入新高度,将第二行中海啸的最大高度编辑为 30 米。请注意观察气泡图的更新。

The cell in the second row and the MaxHeight column is selected, and the number 1 has been replaced with the number 30. The bubble chart bubble sizes have changed to reflect the new MaxHeight data.

从 R2019b 开始,您可以使用 uistyleaddStyle 函数为表 UI 组件的行、列或单元格设置样式。(仅当表 UI 组件位于使用 uifigure 函数创建的图窗中时,才支持样式。App 设计工具使用此类型的图窗来创建 App。)

对表 UI 组件中包含缺失值的单元格设置样式。在本例中,为包含 NaN 值的单元格添加黄色背景色样式。

将海啸示例数据作为表数组读入工作区中。然后,创建一个表 UI 组件来显示数据。

tdata = readtable('tsunamis.xlsx');
vars = {'Year','Month','Day','Hour', ...
        'MaxHeight','Cause','EarthquakeMagnitude'};
tdata = tdata(1:100,vars);

fig = uifigure('Position',[500 500 760 360]);
uit = uitable(fig);
uit.Position = [20 20 720 320];
uit.Data = tdata;
uit.RowName = 'numbered';

使用 ismissing 函数获取包含缺失值的表元素的逻辑数组。找到含有 NaN 值的元素的行和列下标。最后,创建一个黄色背景色样式并将它添加到表 UI 组件中包含 NaN 值的单元格中。

styleIndices = ismissing(tdata);
[row,col] = find(styleIndices);

s = uistyle('BackgroundColor',[1 0.6 0.6]);
addStyle(uit,s,'cell',[row,col]);

从 R2021a 开始,您可以使用 scroll 函数以编程方式滚动到表 UI 组件的行、列或单元格。(仅当表 UI 组件位于使用 uifigure 函数创建的图窗中时,才支持编程滚动。App 设计工具使用此类型的图窗来创建 App。)

将样本患者数据以表数组形式读入工作区。然后,创建一个表 UI 组件来显示数据。

tdata = readtable('patients.xls');
vars = {'Age','Systolic','Diastolic','Smoker'};
tdata = tdata(1:40,vars);

fig = uifigure;
uit = uitable(fig,'Data',tdata);
uit.RowName = 'numbered';

滚动到表的第二十五行。

scroll(uit,'row',25)

创建一个显示 10×3 随机整数数组的表 UI 组件。Data 属性指定要显示的值,Position 属性指定图窗内表的位置和大小。

f = figure;
uit = uitable(f,'Data',randi(100,10,3),'Position',[20 20 262 204]);

表 UI 组件支持在不同的列混合使用不同的数据类型。

创建一个空 Table UI 组件。

f = figure;
uit = uitable(f);

设置 Data 属性以填充数据,构成一个包含不同类型的混合数据的元胞数组。然后设置 Position 属性以调整表的位置和大小来适应数据。

d = {'Male',52,true;'Male',40,true;'Female',25,false};
uit.Data = d;
uit.Position = [20 20 258 78];

设置 ColumnName 属性以将列标题更改为描述性名称。将 ColumnEditable 属性设置为 true,以便用户能够在 UI 中编辑数据。当用户在 UI 中更改值时,Data 属性将更新以反映所做的更改。

uit.ColumnName = {'Gender','Age','Authorized'};
uit.ColumnEditable = true;

输入参数

全部折叠

父容器,指定为使用 figureuifigure 函数创建的图窗或子容器:

  • 面板、选项卡和按钮组可以是任一类型的图窗中的容器。

  • 网格布局是只能位于使用 uifigure 函数创建的图窗中的容器。

名称-值对组参数

示例: uitable(fig,'Data',[1 2 3; 4 5 6])

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在单引号 (' ') 中。您可以指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

可以使用名称-值对组参数设置 Table 属性。

  • 有关对通过 uifigure 函数或 App 设计工具创建的 App 可用的属性列表,请参阅 Table 属性

  • 有关对通过 figure 函数创建的 App 可用的属性列表,请参阅 Table 属性

在 R2008a 中推出