Table - Table UI component - MATLAB (original) (raw)

Description

Table UI components display rows and columns of data in an app. Use theTable object to modify the appearance and behavior of a table after you create it.

Creation

Create a table in an app using the uitable function.

Properties

expand all

Table

Table data, specified as one of the following types of array:

To prevent warnings or NaN values that display when users enter invalid data into an editable cell, write a CellEditCallback function to convert the data to the appropriate type. When a user edits a cell, the Data property updates.

Specify a Table Array

You can specify the Data property as a table array. Table arrays provide a convenient way to store tabular data as a MATLAB® variable. The table, readtable, and array2table functions create table arrays. By contrast, the uitable function creates aTable UI component (a user interface component for an app).

When you specify the Data property of a Table UI component as a table array, then MATLAB sets the format of the Table UI component automatically based on the values in the table array:

For more information on displaying table array data, see Format Tabular Data in Apps.

Specify Numeric, Logical, Cell, String Array, or Cell Array of Character Vectors

Use the ColumnFormat property to specify the format for data that is a numeric, logical, cell, or string array, or a cell array of character vectors. If data is edited and results in a mismatch between the data type of the data and theColumnFormat property, MATLAB converts the data or displays a warning. See the ColumnFormat property description for more information.

This property is read-only.

Table data in the current display, returned as a table, numeric, logical, cell, or string array, or as a cell array of character vectors.

Use this property if you want to update your visualizations based on whether a user has sorted or rearranged columns or edited cells in a table.

MATLAB updates DisplayData when table columns are sorted or rearranged, or when cells are edited. If a user does not sort or rearrange columns, then DisplayData has the same content as theData property. When a user edits a cell, MATLAB updates both the Data andDisplayData properties.

Example: Difference Between Data and DisplayData

Create a table UI component with some data and with sortable columns. Then, sort the table by the values in the first column.

fig = uifigure; tbl = uitable(fig,Data=[4 9; 7 1; 2 3],ColumnSortable=true);

Table UI component with two columns and three rows. The pointer is on the first column header, which shows an indicator that the table is sorted by the values in the first column. The data in the first column appears in ascending order.

Query the Data property and theDisplayData property of the table. TheData property returns the original table data before the table was sorted.

The DisplayData property returns the table data as it appears in the app.

Column names, specified as one of these values:

If the number of columns in the Data property array does not match the number of elements in the ColumnName array, then the number of columns in the resulting table is the larger of the two values.

If you specify the Data property as a table array, then the default column names match the VariableNames property of the table array. Changing the ColumnName property of theTable UI component updates the UI, but it will not update the variable names in the table array.

Example: uit = uitable(uifigure,'ColumnName',{'Name';'Number'},'Data',{'Bob',5})

Example: uit = uitable(uifigure,'ColumnName',{'Name';[]},'Data',{'Bob',5})

Width of table columns, specified as 'auto', '1x','fit', or as a 1-by-n cell array of character vectors, strings, and numeric values.

If a user interactively resizes a table column in a running app, the resized column width persists even if you later update the ColumnWidth property.

Example: uit = uitable(uifigure,'ColumnWidth','auto','Data',[1 2 3;4 5 6])

Example: uit = uitable(uifigure,'ColumnWidth','fit','Data',[1 2 3;4 5 6])

Example: uit = uitable(uifigure,'ColumnWidth',{64,60,40},'Data',[1 2 3;4 5 6])

Example: uit = uitable(uifigure,'ColumnWidth',{'2x','1x','1x'},'Data',[1 2 3;4 5 6])

Example: uit = uitable(uifigure,'ColumnWidth',{64,"auto",40},'Data',[1 2 3;4 5 6])

Example: uit = uitable(uifigure,'ColumnWidth',{'fit','1x','3x'},'Data',[1 2 3;4 5 6])

Ability to edit column cells, specified as:

When a user edits a cell, the Data property updates.

Example: uit = uitable(uifigure,'Data',rand(10,3),'ColumnEditable',[false true true])

Example: uit = uitable(uifigure,'Data',rand(10,3),'ColumnEditable',false)

To enable users to interact with the controls in table columns that contain check boxes or pop-up menus, set the ColumnEditable property to true.

If the Data property is a table array, then any variables that are multicolumn or contain non-editable data types, like duration, are not editable in the running app even when the ColumnEditable property is true. Table array variables that contain mixed data types in a cell array are editable in the running app, as long as the data types are editable.

Ability to sort columns, specified as:

Example: uit = uitable(uifigure,'Data',rand(3),'ColumnSortable',[true true false]);

Example: uit = uitable(uifigure,'Data',rand(5),'ColumnSortable',true);

If the Data property contains cell array data or table array data with cell array columns, then only columns with uniform data types are sortable in the running app. Cell array columns with nonuniform data types cannot be sorted in the running app, even when the ColumnSortable property istrue.

Ability to rearrange table columns, specified as 'on' or'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

When the value of ColumnRearrangeable is'on', app users can reorder the table columns by clicking and dragging the column headers.

Rearranging table columns in the app does not affect the columns in theData property array.

Example: Create Table with Rearrangeable Columns

Create a table with rearrangeable columns in a UI figure window.

fig = uifigure; uit = uitable(fig,"Data",magic(3),"ColumnRearrangeable",true);

To rearrange the first and second columns, click the header of column 1 and drag the column to the right of column 2.

A table with three columns. Column 1 is to the right of column 2.

While the Data property of the table UI component does not change, the DisplayData property is updated to store the data in the order that it is displayed in the table view.

Cell display format, specified as an empty cell array or a 1-by-n cell array of character vectors.

Do not set this property when the Data property contains atable array. For more information, see Format Tabular Data in Apps.

This property sets the format for displaying numeric, logical, cell, or string array, and cell array of character vectors data types. The elements of the cell array correspond to columns in the Data property array. If you do not want to specify a display format for a particular column, specify[] for that column. If you do not specify a format for a column, MATLAB determines the default display by the data type of the data in the cell.

Elements of the cell array must be one of the values described in the table.

Cell Format Value Description
'char' Display left-justified values. If an element in theData property array is logical, thentrue or false appears in the table.To edit a cell, the user types text to replace the existing value.
'logical' Display a center-justified check box. Initially, a check box is selected when the corresponding Data value evaluates totrue. The corresponding values in theData property array must be of typelogical to ensure that the data displays correctly in the table.To edit a cell, the user selects or clears the check box. Then, MATLAB sets the corresponding Data value totrue or false. TheColumnEditable property value must betrue to allow users to select or clear the check boxes.
'numeric' Display a right-justified value equivalent to the Command Window display for numeric data. If an element in the Data property array is logical, then 1 or 0 appears in the table. If an element in the Data property array is not numeric and not logical, then NaN appears in the table.To edit a cell, the user can enter any text.If a user enters text that represents a constant, such aspi, you can code theCellEditCallback function to convert the value to the numeric equivalent. In this case, MATLAB attempts to convert the user-entered text to a numeric value and stores it in the Data property. Then, theCellEditCallback function executes. See theCellEditCallback description for an example.
A 1-by-n cell array of character vectors, such as{'one','two','three'} Display a pop-up menu in an editable column. The value displays as left-justified whether the ColumnEditable property is set to true or false.To edit a cell, the user selects an item from the pop-up menu, or enters text to create a new item. MATLAB sets the corresponding Data property array value to the selected menu item. TheColumnEditable property value must betrue to allow users to select items in the pop-up menu.
A format name accepted by the format function, such as: 'short' or'long' Display the Data property values using the specified format. The values display as right-justified.

Effect of Pop-Up Menu ColumnFormat and Various Data Types

If the ColumnFormat value defines a pop-up menu, the initial Data value does not have to be one of the options in that menu. The initial Data value appears until the user makes a different selection.

For instance, suppose the Data property value for a given column is 'Choose' for all rows, and theColumnFormat value specifies a pop-up menu with the choices of 'group 1' and 'group 2'. When MATLAB creates the table, those table cells display'Choose' until the user selects an item in the pop-up menu:

fig = uifigure; myData = {'Andrew' 31 'Male' 'Choose'; ... 'Bob' 41 'Male' 'Choose'; ... 'Anne' 20 'Female' 'Choose'}; uit = uitable(fig, ... "Position", [100 150 380 100], ... "ColumnFormat",{[] [] [] {'group 1' 'group 2'}}, ... "ColumnEditable",true, ... "Data",myData);

Table UI component with three rows and four columns. The fourth column contains cells with text "Choose". One cell is highlighted and displays a drop-down list with options "group 1" and "group 2".

Data Display of Editable Columns

This table describes how various data types display with specificColumnFormat values.

| | ColumnFormat | | | | | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | | 'numeric' | 'char' | 'logical' | | | | Data Type of Data Array Value | Any numeric type | Table displays number as-is. | MATLAB converts the value to text and displays it left-justified in the table. If MATLAB cannot convert the value, then NaN displays. | Not recommended. MATLAB might return a warning when the user edits the cell, unless you define a CellEditCallback function. | | char | Table displays the value right-justified, as if it is a number. | Table displays the value as-is. | Not recommended. MATLAB might return a warning when the user edits the cell, unless you define a CellEditCallback function. | | | logical | Table displays logical values as numbers. MATLAB might return a warning when the user edits the cell, unless you define a CellEditCallback function. | Table displays logical value as left-justified 'true' or 'false'. MATLAB might return a warning when the user edits the cell, unless you define a CellEditCallback function. | Table displays logical values as check boxes. | |

Row names, specified as one of these values:

If the number of rows in the Data property array does not match the number of elements in the RowName array, then the number of rows in the resulting table reflects the number of rows in theData property.

If you specify the Data property as a table array, then the default row names match the RowName property of the table array. Changing the RowName property of the table UI component updates the UI, but it will not update the row names in the table array.

Example: uit = uitable(uifigure,"RowName",{'Name';'Number'},"Data",{'Bob';5})

Example: uit = uitable(uifigure,"RowName",{'Name';[]},'Data',{'Bob';5})

Font

Font name, specified as a system supported font name. The default font depends on the specific operating system and locale.

If the specified font is not available, then MATLAB uses the best match among the fonts available on the system where the app is running.

Example: 'Arial'

Font angle, specified as 'normal' or 'italic'. Not all fonts have an italic font angle. For fonts that do not, specifying'italic' results in the normal font angle.

Font unit of measurement, specified as one of the values in this table.

Units Value Description
'pixels' On Windows® and Macintosh systems, the size of a pixel is 1/96th of an inch. This size is independent of your system resolution.On Linux® systems, the size of a pixel is determined by your system resolution.This value is the default value for tables inuifigure-based apps.
'points' One point is 1/72nd of an inch.This value is the default value for tables in figure-based apps.
'normalized' Normalized values for specifying the font size as a fraction of the height. When you resize a UI component, MATLAB scales the displayed font to maintain that fraction.
'inches' Inches.
'centimeters' Centimeters.

Interactivity

Table selection, specified as a positive integer, vector of positive integers, orn-by-2 array of positive integers. Use this property to programmatically set the table selection, or to query the table elements that the app user has selected. The type of value that you can specify depends on the value of theSelectionType and Multiselect properties.

SelectionType Multiselect Supported Values Examples Result
'row' 'on' Vector of positive integers [1 3 4 8] Select all rows with the corresponding row indices.
'off' Positive integer 6 Select the row with the corresponding row index.
'column' 'on' Vector of positive integers [2 5 7] Select all columns with the corresponding column indices.
'off' Positive integer 2 Select the column with the corresponding column index.
'cell' 'on' n-by-2 array of positive integers [1 1; 3 4; 4 2] Select all cells with the corresponding row and column subscripts.
'off' 1-by-2 array of positive integers [3 2] Select the cell with the corresponding row and column subscripts.

When SelectionType is 'row' or'column' and MultiSelect is'on', you can specify Selection as either a row or a column vector. However, MATLAB converts and stores the value as a row vector.

Difference Between Selection and DisplaySelection

The Selection and DisplaySelection properties both return the indices of the selected cells, but these indices correspond to different configurations of the table data and can be used for different purposes.

The two properties have the same values if a user does not sort or rearrange the table columns.

For example, create a table UI component with some data and with sortable columns. Then, sort the table by the values in the first column, and select the first row of the sorted table.

fig = uifigure; tbl = uitable(fig,Data=[4 9; 7 1; 2 3],ColumnSortable=true);

Table UI component with two columns and three rows. The first column header has an indicator that the table is sorted by the values in the first column. The data in the first column appears in ascending order. The pointer is on the first row header, and the data in the first row is selected.

Query the Selection property and theDisplaySelection property of the table. TheSelection property returns the indices of the selected cells in the original table data.

The DisplaySelection property returns the indices of the selected cells in the displayed table data.

This property is read-only.

Table selection in the current display, returned as a positive integer, vector of positive integers, or n-by-2 array of positive integers. Use this property to query the table elements that the app user has selected as the selection appears in the current table display.

The type of value that DisplaySelection returns depends on the value of the SelectionType andMultiselect properties.

SelectionType Multiselect Value Examples
'row' 'on' Indices of the selected rows in the current display, returned as a row vector of positive integers [1 3 4 8]
'off' Index of the selected row in the current display, returned as a positive integer 6
'column' 'on' Indices of the selected columns in the current display, returned as a row vector of positive integers [2 5 7]
'off' Index of the selected column in the current display, returned as a positive integer 2
'cell' 'on' Row and column subscripts of the selected cells in the current display, returned as an n-by-2 array of positive integers [1 1; 3 4; 4 2]
'off' Row and column subscripts of the selected cell in the current display, returned as a 1-by-2 array of positive integers [3 2]

Difference Between Selection and DisplaySelection

The Selection and DisplaySelection properties both return the indices of the selected cells, but these indices correspond to different configurations of the table data and can be used for different purposes.

The two properties have the same values if a user does not sort or rearrange the table columns.

For example, create a table UI component with some data and with sortable columns. Then, sort the table by the values in the first column, and select the first row of the sorted table.

fig = uifigure; tbl = uitable(fig,Data=[4 9; 7 1; 2 3],ColumnSortable=true);

Table UI component with two columns and three rows. The first column header has an indicator that the table is sorted by the values in the first column. The data in the first column appears in ascending order. The pointer is on the first row header, and the data in the first row is selected.

Query the Selection property and theDisplaySelection property of the table. TheSelection property returns the indices of the selected cells in the original table data specified using the Data property.

The DisplaySelection property returns the indices of the selected cells in the displayed table data.

Table selection type, specified as 'cell','row', or 'column'. The table selection type specifies which table elements MATLAB selects when the user interacts with the table. For example, ifSelectionType is 'row' and the app user clicks a cell in the second row of the table, this selects the entire second row.

Multiple element selection, specified as 'on' or'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

Operational state of table, specified as 'on','off', or 'inactive'. TheEnable property controls whether a UI component responds to button clicks. There are three possible values:

The value of the Enable property and the type of button click determine how the UI responds.

Enable Value Response to Left-Click Response to Right-Click
'on' The SelectionChangedFcn function executes. The Selection property updates in the callback data object that MATLAB passes to the callback function. The figure’s WindowButtonDownFcn callback executes.The ButtonDownFcn callback executes.
'off' or 'inactive' The figure’s WindowButtonDownFcn callback executes.The ButtonDownFcn callback executes. The figure’s WindowButtonDownFcn callback executes.The ButtonDownFcn callback executes.

Tooltip, specified as a character vector, cell array of character vectors, string array, or 1-D categorical array. Use this property to display a message when the user hovers the pointer over the component at run time. The tooltip displays even when the component is disabled. To display multiple lines of text, specify a cell array of character vectors or a string array. Each element in the array becomes a separate line of text. If you specify this property as a categorical array, MATLAB uses the values in the array, not the full set of categories.

Context menu, specified as a ContextMenu object created using the uicontextmenu function. Use this property to display a context menu when you right-click on a component.

Color and Styling

Cell text color, specified as an RGB triplet, a hexadecimal color code, or one of the color options listed in the table. When you set cell text color using theForegroundColor property it applies to all the cells in the table UI component.

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance
"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

This table lists the default color palettes for plots in the light and dark themes.

Palette Palette Colors
"gem" — Light theme default_Before R2025a: Most plots use these colors by default._ Sample of the "gem" color palette
"glow" — Dark theme default Sample of the "glow" color palette

You can get the RGB triplets and hexadecimal color codes for these palettes using the orderedcolors and rgb2hex functions. For example, get the RGB triplets for the "gem" palette and convert them to hexadecimal color codes.

RGB = orderedcolors("gem"); H = rgb2hex(RGB);

Before R2023b: Get the RGB triplets using RGB = get(groot,"FactoryAxesColorOrder").

Before R2024a: Get the hexadecimal color codes using H = compose("#%02X%02X%02X",round(RGB*255)).

Table background color, specified as an RGB triplet, a hexadecimal color code, a color name, a short name, or a matrix of color values.

Specify a matrix of color values with m rows when you want the shading of the table rows to follow a repeating pattern of m different colors. MATLAB uses the rows of the matrix when the RowStriping property is 'on'. The table background is not striped unless bothRowStriping is 'on' andBackgroundColor is a matrix with multiple rows.

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color Name Short Name RGB Triplet Hexadecimal Color Code Appearance
"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

This table lists the default color palettes for plots in the light and dark themes.

Palette Palette Colors
"gem" — Light theme default_Before R2025a: Most plots use these colors by default._ Sample of the "gem" color palette
"glow" — Dark theme default Sample of the "glow" color palette

You can get the RGB triplets and hexadecimal color codes for these palettes using the orderedcolors and rgb2hex functions. For example, get the RGB triplets for the "gem" palette and convert them to hexadecimal color codes.

RGB = orderedcolors("gem"); H = rgb2hex(RGB);

Before R2023b: Get the RGB triplets using RGB = get(groot,"FactoryAxesColorOrder").

Before R2024a: Get the hexadecimal color codes using H = compose("#%02X%02X%02X",round(RGB*255)).

Example: uitable(uifigure,"Data",rand(10,3),"BackgroundColor",[0 0 1]) creates a table with a blue background color.

Example: uitable(uifigure,"Data",rand(10,3),"BackgroundColor","r") creates a table with a red background color.

Example: uitable(uifigure,"Data",rand(10,3),"BackgroundColor",["#FF0000"; "#0000FF"]) creates a table with alternating red and blue striped rows.

Example: uitable(uifigure,"Data",rand(10,3),"BackgroundColor",[0 1 0; 0 0 1]) creates a table with alternating green and blue striped rows.

Alternate row shading, specified as 'on' or'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

This property controls the shading pattern of the table rows. When theRowStriping value is set to 'on', theBackgroundColor matrix specifies the row colors to display in a repeating pattern. If the BackgroundColor matrix has only one row, then the shading is the same in all table rows.

When RowStriping is set to 'off', then the first color in the BackgroundColor matrix defines the shading for all rows in the table.

This property is read-only.

Configuration of added styles created using the uistyle function, returned as an n-by-3 table array. Each row of the table array corresponds to a style that is currently applied to the table UI component. Styles that are added consecutively are given a style order number ofn+1. The Target andTargetIndex columns specify the part of the table UI component that the style was added to. The Style column specifies the style class name.

Use this property if you want to remove a style from the table UI component using the removeStyle function.

Example: Remove a Style

First, add three styles to a table UI component.

s1 = uistyle("BackgroundColor","yellow"); s2 = uistyle("BackgroundColor","red"); s3 = uistyle("FontColor","b","FontWeight","bold");

fig = uifigure; fig.Position = [100 100 520 220]; uit = uitable(fig); uit.Data = rand(5); uit.Position = [20 30 480 135];

addStyle(uit,s1,"row",[1 2 4 5]); addStyle(uit,s2,"cell",[2 1; 4 2; 1 3; 1 5]) addStyle(uit,s3,"column",2);

Table UI component. Four rows have a yellow background color, four cells have a red background color, and one column has a blue font color.

When you query uit.StyleConfigurations, a 3-by-3 table array is returned. The row style was added to the table UI component first, so it is style order number 1. The TargetIndex value for the row style, {1×4 double}, indicates that four rows were specified when the style was added. Similarly, the second style was added to four cells in the table. The third style was added to the second column.

ans =

3×3 table

     Target    TargetIndex                Style           
     ______    ____________    ___________________________

1    row       {1×4 double}    [1×1 matlab.ui.style.Style]
2    cell      {4×2 double}    [1×1 matlab.ui.style.Style]
3    column    {[       2]}    [1×1 matlab.ui.style.Style]

Remove the second style that was added to the table, by specifying style order number 2. Notice how the table UI component updates.

Table UI component. Four rows have a yellow background color and one column has a blue font color.

Position

Location and size of the table, specified as a four-element vector of the form[left bottom width height]. This table describes each element in the vector.

Element Description
left Distance from the inner left edge of the parent container to the outer left edge of the table
bottom Distance from the inner bottom edge of the parent container to the outer bottom edge of the table
width Distance between the right and left outer edges of the table
height Distance between the top and bottom outer edges of the table

All measurements are in units specified by theUnits property.

The Position values are relative to the_drawable area_ of the parent container. The drawable area is the area inside the borders of the container and does not include the area occupied by decorations such as a menu bar or title.

Location and size of the table, specified as a four-element vector of the form[left bottom width height]. All measurements are in units specified by the Units property.

This property value is identical to the Position andOuterPosition property values.

Location and size of the table, specified as a four-element vector of the form[left bottom width height]. All measurements are in units specified by the Units property.

This property value is identical to the Position andInnerPosition property values.

Units of measurement, specified as one of the values in this table.

Units Value Description
'pixels' (default) On Windows and Macintosh systems, the size of a pixel is 1/96th of an inch. This size is independent of your system resolution.On Linux systems, the size of a pixel is determined by your system resolution.
'normalized' These units are normalized with respect to the parent container. The lower-left corner of the container maps to (0,0) and the upper-right corner maps to(1,1).
'inches' Inches.
'centimeters' Centimeters.
'points' Points. One point equals 1/72nd of an inch.
'characters' These units are based on the default uicontrol font of the graphics root object:Character width = width of the letter x.Character height = distance between the baselines of two lines of text.To access the default uicontrol font, useget(groot,'defaultuicontrolFontName') orset(groot,'defaultuicontrolFontName').

The recommended value is 'pixels', because most MATLAB app building functionality measures distances in pixels. You can create a table that rescales based on the size of the parent container by parenting the table to a grid layout manager created using the uigridlayout function. For more information, see Lay Out Apps Programmatically.

Layout options, specified as aGridLayoutOptions object. This property specifies options for components that are children of grid layout containers. If the component is not a child of a grid layout container (for example, it is a child of a figure or panel), then this property is empty and has no effect. However, if the component is a child of a grid layout container, you can place the component in the desired row and column of the grid by setting the Row and Column properties on the GridLayoutOptions object.

For example, this code places a table UI component in the third row and second column of its parent grid.

g = uigridlayout([4 3]); uit = uitable(g,'Data',rand(10,3)); uit.Layout.Row = 3; uit.Layout.Column = 2;

To make the table span multiple rows or columns, specify theRow or Column property as a two-element vector. For example, this table spans columns 2 through3:

uit.Layout.Column = [2 3];

Callbacks

Cell edit callback function, specified as one of these values:

Use this callback function to perform calculations or validate input when the app user changes the contents of a table cell.

This callback function can access specific information about the user’s interaction with the cell (such as the cell indices). MATLAB passes this information in a CellEditData object as the second argument to your callback function. In App Designer, the argument is called event. You can query the object properties using dot notation. For example, event.Indices returns the indices of the selected cell. The CellEditData object is not available to callback functions specified as character vectors.

The following table describes properties of the CellEditData object.

Property Description
Indices This is a 1-by-2 array containing the row and column indices of the cell the user edited in the running app. When a column is sorted, Indices returns the original 1-by-2 array of a cell before it was sorted—DisplayIndices returns the new location of the edited cell that displays visually in the sorted table.
DisplayIndices This is a 1-by-2 array containing the row and column indices corresponding to the location of the edited cell in the display of the sorted table. If a user does not sort columns, then DisplayIndices has the same content as the Indices property.
PreviousData This is the previous cell data. The default is an empty matrix, [].
EditData This is the user-entered value.
NewData This is the value that MATLAB wrote to the Data property array.The NewData property is empty if MATLAB detects an error in the user-entered data.
Error This is the error message returned if MATLAB detects an error in the user-entered data.The Error property is empty when MATLAB successfully writes the value to the Data property.If the Error property is not empty, then the CellEditCallback can display the message, or it can attempt to fix the problem.
Source Component executing the callback.
EventName 'CellEdit'.

When the user edits a table cell, MATLAB performs these steps:

  1. Tries to store the new value into the Data property of the table
  2. Calls the CellEditCallback function (if it exists)

If the value results in an error and there is no CellEditCallback function, then the cell data reverts to its previous value and no error displays.

For more information about writing callbacks, see Callbacks in App Designer.

Selection changed callback, specified as one of these values:

Use this callback function to execute commands when the app user selects a different cell, row, or column of the table.

This callback function can access specific information about the user’s interaction with the table, such as the elements that they select. MATLAB passes this information in aTableSelectionChangedData object as the second argument to your callback function. In App Designer, this argument is called event. You can query the object properties using dot notation. For example,event.Selection returns the selected cell, row, or column indices. The TableSelectionChangedData object is not available to callback functions specified as character vectors.

The following table describes properties of theTableSelectionChangedData object.

Property Description
Selection Array containing the indices of the elements the user selected in the running app. If SelectionType is'cell', this is an n-by-2 array containing the row and column indices of the cells the user selected. If theSelectionType is 'row' or'column', this is a 1-by-n array containing the indices of the rows or columns the user selected. For multicolumn variables in a table array, the column indices refer to the whole column. When a column is sorted,Selection returns the location of the selection in the unsorted table data. To return the location where the selection appears visually in the sorted table, use the DisplaySelection property instead.
PreviousSelection Array containing the cell, row, or column indices of the previously selected table data.
SelectionType Type of the selected table elements, given as'cell', 'row', or'column'.
DisplaySelection Array containing the cell, row, or column indices corresponding to the location of the selected elements as they appear visually in the sorted table. If a user does not sort the table, thenDisplaySelection has the same value asSelection.
PreviousDisplaySelection Array containing the cell, row, or column indices corresponding to the location of the previously selected elements as they appear visually in the sorted table. If a user does not sort the table, thenPreviousDisplaySelection has the same value asPreviousSelection.
Source Component that executes the callback.
EventName 'SelectionChanged'.

For more information about writing callbacks, see Callbacks in App Designer.

The table executes the SelectionChangedFcn callback when the user changes the table selection by clicking, by using the arrow keys, or by using one of these keyboard shortcuts.

Contiguous selection options:

Noncontiguous selection options:

Display data changed callback, specified as one of these values:

This callback executes when the DisplayData changes. This occurs when the app user performs one of these actions:

Use this callback if you want information about user interactions that caused theDisplayData to change. If you need specific information about edited cells, create a CellEditCallback instead.

This callback function can access specific information about whether columns are sorted or rearranged or cells are edited. MATLAB passes this information in a DisplayDataChangedData object as the second argument to your callback function. In App Designer, the argument is called event. You can query the object properties using dot notation. For example, event.InteractionColumn returns the index of the column that was interacted with in Data. TheDisplayDataChangedData object is not available to callback functions specified as character vectors.

Property Description
DisplayRowName Cell array of RowName property values in the sorted display. DisplayRowName will always be a permutation of the original RowName property.
DisplayColumnName Cell array of ColumnName property values in the sorted display. DisplayColumnName will always be a permutation of the original ColumnName property.
Interaction User interaction that triggered the callback, given as'sort', 'edit', or'rearrange'.
InteractionColumn Index of modified column in Data.
InteractionDisplayColumn Index of modified column in DisplayData.
InteractionVariable VariableNames property of the modified column for table array data. If Data contains a data type other than a table array, then InteractionVariable returns an empty character array.
DisplaySelection Array containing the cell, row, or column indices corresponding to the location of the selected elements in the display of the sorted table.
PreviousDisplaySelection Array containing the cell, row, or column indices corresponding to the location of the previously selected elements in the display of the sorted table.
Source Component executing the callback.
EventName 'DisplayDataChanged'.

For more information about specifying a callback as a function handle, cell array, or character vector, see Callbacks in App Designer.

Clicked function, specified as one of these values:

This callback function executes when the user clicks anywhere in the table UI component.

This callback function can access specific information about the user’s interaction with the table. MATLAB passes this information in a ClickedData object as the second argument to your callback function. In App Designer, the argument is called event. You can query the object properties using dot notation. For example,event.InteractionInformation returns information about where the user clicked in the table. The ClickedData object is not available to callback functions specified as character vectors.

This table lists the properties of the ClickedData object.

Property Value
InteractionInformation Information about where in the component the app user clicked. This information is stored as an object with these properties: DisplayRowDisplayColumnRowColumnRowHeaderColumnHeaderScreenLocationLocationYou can query the object properties using dot notation. For example, event.InteractionInformation.Row returns which row of the table the user clicked.
Source Component that executes the callback
EventName 'Clicked'

This table lists the properties of the InteractionInformation object associated with the table UI component.

Property Value
DisplayRow Row that the user clicked as it appears visually in the table, returned as a scalar.If the user has not sorted the table, thenDisplayRow has the same value asRow. If the user clicked an area of the table UI component that is not associated with a row, thenDisplayRow is an empty array.
DisplayColumn Column that the user clicked as it appears visually in the table, returned as a scalar.If the user has not rearranged the table, then DisplayColumn has the same value asColumn. If the user clicked an area of the table UI component that is not associated with a column, thenDisplayColumn is an empty array.
Row Row that the user clicked as it corresponds to the original table data, returned as a scalar.If the user has not sorted the table, then Row has the same value asDisplayRow. If the user clicked an area of the table UI component that is not associated with a row, then Row is an empty array.
Column Column that the user clicked as it corresponds to the original table data, returned as a scalar.If the user has not rearranged the table, then Column has the same value asDisplayColumn. If the user clicked an area of the table UI component that is not associated with a column, thenColumn is an empty array.
RowHeader Whether the user clicked on the table row header, returned as a logical0 (false) or 1 (true).
ColumnHeader Whether the user clicked on the table column header, returned as a logical 0 (false) or1 (true).
Location Location where the user clicked relative to the bottom-left corner of the parent container of the table, returned as a two-element vector of the form [x y].The value ofx represents the horizontal distance from the left edge of the parent container to the click location. The value ofy represents the vertical distance from the bottom edge of the parent container to the click location. Distances are measured in pixels.
ScreenLocation Location where the user clicked relative to the bottom-left corner of their primary display, returned as a two-element vector of the form[x y].The value of x represents the horizontal distance from the left edge of the display to the click location. The value of y represents the vertical distance from the bottom edge of the display to the click location. Distances are measured in pixels.

For more information about writing callbacks, see Callbacks in App Designer.

Example: Select Background Color When Table Cell Is Clicked

Create a table UI component with some data. Specify aClickedFcn callback function namedcolorCells that executes when a user clicks the table. In thecolorCells function:

To try this example, save the code in a new script and run it. Click a cell in the table and select a background color for that cell.

fig = uifigure; t = uitable(fig); t.Data = rand(5); t.ClickedFcn = @colorCells;

function colorCells(src,event) r = event.InteractionInformation.Row; c = event.InteractionInformation.Column; if ~isempty(r) && ~isempty(c) removeStyle(src) color = uisetcolor; s = uistyle(BackgroundColor=color); addStyle(src,s,"cell",[r c]); focus(src) end end

Double-clicked callback, specified as one of these values:

This callback function executes when the user double-clicks anywhere in the table UI component.

This callback function can access specific information about the user’s interaction with the table. MATLAB passes this information in a DoubleClickedData object as the second argument to your callback function. In App Designer, the argument is called event. You can query the object properties using dot notation. For example,event.InteractionInformation returns information about where the user double-clicked in the table. The DoubleClickedData object is not available to callback functions specified as character vectors.

This table lists the properties of the DoubleClickedData object.

Property Value
InteractionInformation Information about where in the component the app user double-clicked. This information is stored as an object with these properties: DisplayRowDisplayColumnRowColumnRowHeaderColumnHeaderScreenLocationLocationYou can query the object properties using dot notation. For example, event.InteractionInformation.Row returns which row of the table the user double-clicked.
Source Component that executes the callback
EventName 'DoubleClicked'

This table lists the properties of the InteractionInformation object associated with the table UI component.

Property Value
DisplayRow Row that the user double-clicked as it appears visually in the table, returned as a scalar.If the user has not sorted the table, then DisplayRow has the same value asRow. If the user double-clicked an area of the table UI component that is not associated with a row, thenDisplayRow is an empty array.
DisplayColumn Column that the user double-clicked as it appears visually in the table, returned as a scalar.If the user has not rearranged the table, then DisplayColumn has the same value asColumn. If the user double-clicked an area of the table UI component that is not associated with a column, thenDisplayColumn is an empty array.
Row Row that the user double-clicked as it corresponds to the original table data, returned as a scalar.If the user has not sorted the table, then Row has the same value asDisplayRow. If the user double-clicked an area of the table UI component that is not associated with a row, thenRow is an empty array.
Column Column that the user double-clicked as it corresponds to the original table data, returned as a scalar.If the user has not rearranged the table, then Column has the same value asDisplayColumn. If the user double-clicked an area of the table UI component that is not associated with a column, thenColumn is an empty array.
RowHeader Whether the user double-clicked on the table row header, returned as a logical 0 (false) or1 (true).
ColumnHeader Whether the user double-clicked on the table column header, returned as a logical 0 (false) or1 (true).
Location Location where the user double-clicked relative to the bottom-left corner of the parent container of the table, returned as a two-element vector of the form [x y].The value ofx represents the horizontal distance from the left edge of the parent container to the double-click location. The value ofy represents the vertical distance from the bottom edge of the parent container to the double-click location. Distances are measured in pixels.
ScreenLocation Location where the user double-clicked relative to the bottom-left corner of their primary display, returned as a two-element vector of the form [x y].The value of x represents the horizontal distance from the left edge of the display to the double-click location. The value of y represents the vertical distance from the bottom edge of the display to the double-click location. Distances are measured in pixels.

For more information about writing callbacks, see Callbacks in App Designer.

Example: Select Background Color When Table Cell Is Double-Clicked

Create a table UI component with some data. Specify aDoubleClickedFcn callback function namedcolorCells that executes when a user double-clicks the table. In the colorCells function:

To try this example, save the code in a new script and run it. Double-click a cell in the table and select a background color for that cell.

fig = uifigure; t = uitable(fig); t.Data = rand(5); t.DoubleClickedFcn = @colorCells;

function colorCells(src,event) r = event.InteractionInformation.Row; c = event.InteractionInformation.Column; if ~isempty(r) && ~isempty(c) removeStyle(src) color = uisetcolor; s = uistyle(BackgroundColor=color); addStyle(src,s,"cell",[r c]);
focus(src) end end

Button-press callback function, specified as one of these values:

For more information about specifying a callback property value as a function handle, cell array, or character vector, see Specify a Callback Function.

The ButtonDownFcn callback is a function that executes when the user clicks a mouse button on the UI component. The callback executes in the following situations:

Note

The [SelectionChangedFcn](matlab.ui.control.table.html#mw%5F1135e93c-c65f-4439-9112-dc80ae0d6d65) property is recommended over theCellSelectionCallback, because it provides additional data about the interaction.

Cell selection callback function, specified as one of these values:

This callback function executes when the user selects cells. The function can access specific information about the user’s interaction with the cell (such as the cell indices). MATLAB passes this information in a CellSelectionChangeData object as the second argument to your callback function. In App Designer, the argument is called event. You can query the object properties using dot notation. For example, event.Indices returns the indices of the selected cell. The CellSelectionChangeData object is not available to callback functions specified as character vectors.

The following table describes properties of theCellSelectionChangeData object.

Property Description
Indices This is an n-by-2 array containing the row and column indices of the cell the user selected in the running app. For multicolumn variables in a table array, the column indices refer to the whole column. When a column is sorted, Indices returns the original 1-by-2 array of a cell before it was sorted—DisplayIndices returns the new location of the selected cell that displays visually in the sorted table.
DisplayIndices This is an n-by-2 array containing the row and column indices corresponding to the location of the selected cell in the display of the sorted table. If a user does not sort the table, thenDisplayIndices has the same content as theIndices property.
Source Component executing the callback.
EventName 'CellSelection'.

For more information about writing callbacks, see Callbacks in App Designer.

Callback Execution Control

This property is read-only.

Ability to become current object, specified as'on' or 'off', or as numeric or logical1 (true) or 0 (false). A value of 'on' is equivalent totrue, and 'off' is equivalent tofalse. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

Parent/Child

Parent container, specified as a Figure object or one of its child containers: Tab, Panel, ButtonGroup, orGridLayout. If no container is specified, MATLAB calls the uifigure function to create a new Figure object that serves as the parent container.

Children of table, returned as an empty array. Table objects have no children, so setting this property has no effect.

Identifiers

This property is read-only.

Type of graphics object, returned as 'uitable'.

Object identifier, specified as a character vector or string scalar. You can specify a unique Tag value to serve as an identifier for an object. When you need access to the object elsewhere in your code, you can use the findobj function to search for the object based on the Tag value.

Object Functions

Examples

collapse all

Create a table array t with different data types by reading data from a file. Select the first 15 rows of four variables from t.

t = readtable("patients.xls"); vars = ["Age","Systolic","Diastolic","Smoker"]; t = t(1:15,vars);

Create a table UI component to display the tabular data. The data type determines how the data appears in the component. For example, logical data displays as a check box. For more information, see Format Tabular Data in Apps.

fig = uifigure; uit = uitable(fig,"Data",t,"Position",[20 20 350 300]);

Figure contains an object of type uitable.

Display and programmatically update data in a table UI component.

Create a table array by reading in tsunami data from a file, and display a subset of the data in a table UI component.

t = readtable("tsunamis.xlsx"); vars = ["Year","MaxHeight","Validity"]; t = t(1:20,vars); fig = uifigure; uit = uitable(fig,"Data",t);

Figure contains an object of type uitable.

Update the validity of the tsunami in the first row by editing the Data property of the table UI component.

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

Figure contains an object of type uitable.

Convert the maximum height data from meters to feet by accessing and modifying the data in the MaxHeight variable.

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

Figure contains an object of type uitable.

Create an app that allows users to sort and edit table data, and that updates a data visualization when data is changed.

In a file named tableDataApp.m, write a function that implements the app:

function tableDataApp % 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]; gl = uigridlayout(fig,[1 2]);

% Create table UI component uit = uitable(gl); uit.Data = t; uit.ColumnSortable = true; uit.ColumnEditable = [false false true];

% Create bubble chart ax = geoaxes(gl); lat = t.Latitude; long = t.Longitude; sz = t.MaxHeight; bubblechart(ax,lat,long,sz)

% Specify table callback uit.DisplayDataChangedFcn = @(src,event) updatePlot(src,ax); end

function updatePlot(src,ax) t = src.DisplayData; lat = t.Latitude; long = t.Longitude; sz = t.MaxHeight; bubblechart(ax,lat,long,sz) end

Run the app.

Figure contains an axes object and an object of type uigridlayout. The geoaxes object contains an object of type bubblechart.

A sortable column displays arrows in the header when you point to it. Sort the table by the maximum height of the tsunamis.

tableDataApp that has a table UI component with tsunami data next to a geographic bubble chart of the tsunamis in the table. The MaxHeight column of the tsunami data table is sorted in ascending order. The mouse cursor is on the MaxHeight column header, where an arrow pointing up is displayed next to the header text.

Edit the maximum height of the tsunami in the second row to be 30 meters by double-clicking the table cell and entering the new height. The bubble chart updates in response.

tableDataApp showing a selected cell in the MaxHeight column of the second row of the table, where the number 1 has been replaced with the number 30. The bubble chart bubble sizes have changed to reflect the new MaxHeight data.

Style rows, columns, or cells of a table UI component using theuistyle andaddStyle functions.

Read tsunami sample data into the workspace as a table array. Then, create a table UI component to display the data.

tdata = readtable("tsunamis.xlsx"); vars = ["Year","Month","Day","Hour", ... "Cause","EarthquakeMagnitude"]; tdata = tdata(1:20,vars);

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

Use the ismissing function to get a logical array of the table elements that contain missing values. Find the row and column subscripts for the elements that have NaN values. Finally, create a red background color style and add it to the cells in the table with NaN.

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

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

Table with earthquake data. The cells with NaN are highlighted in red.

Create an app that plots data on a map when the app user selects the data in a table.

In a file named selectTsunamis.m, write a function that implements the app:

function selectTsunamis % Load data t = readtable("tsunamis.xlsx"); vars = ["Latitude","Longitude","MaxHeight"]; t = t(1:20,vars);

% Create UI components fig = uifigure("Position",[100 100 800 350]); gl = uigridlayout(fig,[1 2]); gl.ColumnWidth = {'1x','2x'}; tbl = uitable(gl); gb = geobubble(gl,[],[]);

% Configure table tbl.Data = t; tbl.SelectionType = "row"; tbl.Multiselect = "on"; tbl.SelectionChangedFcn = @(src,event) plotTsunami(src,event,gb);
end

% Plot tsunami data for each selected row function plotTsunami(src,event,gb) rows = event.Selection; data = src.Data(rows,:); gb.LatitudeData = data.Latitude; gb.LongitudeData = data.Longitude; gb.SizeData = data.MaxHeight; end

Run the app.

Figure contains objects of type geobubble, uigridlayout.

Select multiple table rows by holding Ctrl while clicking. The plot updates with the selected tsunami data.

Since R2021a

Programmatically scroll to a row, column, or cell of a table UI component using the scroll function.

Read sample patient data into the workspace as a table array. Then, create a table UI component to display the data.

tdata = readtable("patients.xls"); vars = ["Age","Systolic","Diastolic","Smoker"]; tdata = tdata(1:40,vars);

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

Table with patient data in a UI figure window. The table rows are numbered, and the table is scrolled to the top.

Scroll to the 25th row of the table.

Table with patient data in a UI figure window. The table is scrolled so that row 25 is at the top of the visible data.

Version History

Introduced in R2008a

expand all

When you add multiline data to a table, the component adjusts row heights to display the content. For example, this code creates a table that includes two lines of text in one cell. The height of the row with multiline content adjusts to display both lines of text.

fig = uifigure; t = uitable(uifigure, ... Data=["Omelette","Eggs";"Hamburger","Beef"+newline+"Bun"]);

These properties are available for tables in apps created using thefigure function:

When you query the Extent property of a table UI component in afigure-based app, the property always returns [0 0 300 300]. The third and fourth elements of the vector represent the default table width and height. In previous releases, querying Extent returned a vector where the third and fourth elements represent the width and height of the rectangle outlining the table area, estimated using the table data, row heights, and column widths. If you use the Extent property to specify the position of UI components in your app, the table UI component might have a different size or the layout of your app might appear shifted.

Update your code to remove references to the table Extent property by using one of these alternatives:

The default FontColor property value in the light theme has changed slightly. Starting in R2025a, the default value is [0.1294 0.1294 0.1294]. Previously, the default value was [0 0 0].

When modifying table colors using the BackgroundColor property, you can specify colors as hexadecimal color codes or color names, in addition to RGB triplets.

Use the DisplaySelection property of the table to query the cells that are selected in the current table display. This property is useful when an app user has sorted or rearranged columns in the table and you want to know which cells are selected based on the app user's view of the data.

Use the ClickedFcn and DoubleClickedFcn callback properties to program a response to a user clicking and double-clicking the table UI component.

Specify the ability to interactively rearrange table columns in an app by using theColumnRearrangeable property. In a table UI component with theColumnRearrangeable value set to 'on', rearrange table columns in the app by clicking and dragging the column header.

In App Designer and apps created using the uifigure function, you can program an app to respond when a user rearranges table columns by creating aDisplayDataChangedFcn callback function.

Starting in R2022a, using the RearrangeableColumns property to specify whether users can rearrange table columns in a figure-based app is not recommended. Use the ColumnRearrangeable property instead. The new property can have the same values as the old one.

There are no plans to remove support for the RearrangeableColumns property at this time. However, the RearrangeableColumns property no longer appears in the list returned by calling the get function on a table UI component.

Use properties to configure selection options for table UI components.

Selection options in table UI components are supported only in App Designer apps and in figures created with the uifigure function.

Configure the column widths of table UI components in App Designer anduifigure-based apps.

Starting in R2020a, using the UIContextMenu property to assign a context menu to a graphics object or UI component is not recommended. Use theContextMenu property instead. The property values are the same.

There are no plans to remove support for the UIContextMenu property at this time. However, the UIContextMenu property no longer appears in the list returned by calling the get function on a graphics object or UI component.

Starting in R2018b, using the TooltipString property to specify a tooltip for a UI component is not recommended. Use the Tooltip property instead. The property values are the same.

There are no plans to remove support for the TooltipString property at this time. However, the TooltipString property no longer appears in the list returned by calling the get function on a UI component.

Starting in R2014b, using the Selected property is not recommended. It no longer has any effect on objects of this type.

Starting in R2014b, using the SelectionHighlight property is not recommended. It no longer has any effect on objects of this type.