uitable

Создайте табличный компонент пользовательского интерфейса

Описание

uit = uitable создает табличный компонент пользовательского интерфейса в текущей фигуре и возвращает Table Объект компонента пользовательского интерфейса. Если нет никакой доступной фигуры, MATLAB® вызывает figure функция, чтобы создать ту.

uit = uitable(Name,Value) задает значения свойств компонента таблицы UI, использующего один или несколько аргументов пары "имя-значение".

пример

uit = uitable(parent) составляет таблицу в заданном родительском контейнере. Родительский контейнер может быть фигурой, созданной с любым figure или uifigure функция или дочерний контейнер, такой как панель. Значения свойств для uitable варьируйтесь немного в зависимости от того, создано ли приложение с figure или uifigure функция. Для получения дополнительной информации см. Аргументы в виде пар имя-значение.

пример

uit = uitable(parent,Name,Value) задает родительский контейнер и одни или несколько значений свойств.

Примеры

свернуть все

Начиная в R2018a, можно отобразиться table данные массива в компоненте таблицы UI. (Этот тип данных поддерживается только, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

Создайте табличный массив t путем вызова readtable функционируйте, чтобы считать данные из файла. Выберите четыре переменные и 15 строк от t.

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.

Отобразитесь и программно обновитесь table данные массива в компоненте таблицы UI. (Этот тип данных поддерживается только, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

Создайте табличный массив путем чтения в данных о цунами из файла и отобразите подмножество данных в компоненте таблицы 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").

Обновите валидность цунами в первой строке путем редактирования Data свойство таблицы UI.

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.

Создайте приложение, которое позволяет пользователям сортировать и редактировать табличные данные, и это обновляет визуализацию данных, когда данные изменяются. (Интерактивная сортировка столбца поддерживается только, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

Во-первых, создайте программный файл под названием tsunamisData.m. В программном файле:

  • Создайте a table массив путем вызова readtable функция.

  • Создайте фигуру пользовательского интерфейса.

  • Создайте поддающийся сортировке и доступный для редактирования компонент таблицы UI, чтобы отобразиться на рисунке. Сохраните table массив к Data компонента свойство.

  • Создайте пузырьковый график, чтобы визуализировать данные о цунами, где координаты пузыря представляют широту и долготу цунами, и размер пузыря представляет максимальную высоту.

  • Задайте DisplayDataChangedFcn коллбэк, который использует DisplayData свойство обновить пузырьковую диаграмму, когда столбцы видов пользователя приложения или ячейки редактирований в компоненте таблицы UI.

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, можно разработать строки, столбцы или ячейки компонента таблицы UI использование uistyle и addStyle функции. (Стили только поддерживаются, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

Разработайте ячейки в компоненте таблицы 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 значения. Наконец, создайте желтый стиль цвета фона и добавьте его в ячейки с NaN значения в компоненте таблицы UI.

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.

Начиная в R2021b, можно программно установить и запросить, какие табличные элементы выбраны и указывают, могут ли пользователи выбрать ячейки, строки или столбцы. (Программируемый выбор только поддерживается, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

При использовании этой функции создайте приложение, которое автоматически отображает данные на графике по карте, когда пользователь выбирает его в таблице. Во-первых, создайте программный файл под названием selectTsunamis.m. В программном файле:

  • Загрузите данные о цунами путем вызова readtable функция.

  • Создайте фигуру пользовательского интерфейса с компонентом таблицы UI и географической пузырьковой диаграммой в панели.

  • Сконфигурируйте компонент таблицы UI. Храните данные о цунами в Data свойство, и позволило пользователям выбрать несколько строк путем установки SelectionType и MultiSelect свойства.

  • Задайте SelectionChangedFcn коллбэк, который обновляет пузырьковую диаграмму, когда пользователь приложения изменяет табличный выбор. Графики функций пузырь для каждой выбранной строки, где размер пузыря представляет максимальную высоту цунами.

function selectTsunamis
% Load data
T = readtable('tsunamis.xlsx');
vars = {'Latitude','Longitude','MaxHeight'};
T = T(1:20,vars);

% Create UI components
fig = uifigure('Position',[500 500 700 350]);
tbl = uitable(fig,'Position',[20 20 250 300]);
pnl = uipanel(fig,'Position',[285 20 400 300]);
geobubble(pnl,[],[]);

% Configure table
tbl.Data = T;
tbl.SelectionType = 'row';
tbl.Multiselect = 'on';
tbl.SelectionChangedFcn = @plotTsunami;

  % Plot tsunami data for each selected row
  function plotTsunami(src,event)
    rows = event.Selection;
    data = src.Data(rows,:);
    lat = data.Latitude;
    long = data.Longitude;
    ht = data.MaxHeight;
    geobubble(pnl,lat,long,ht);
  end
end

Запустите selectTsunamis функция и выбор несколько строк таблицы удержанием Ctrl при нажатии. График обновляется с данными о цунами.

Figure window with a table and a geographic bubble chart. Multiple table rows are selected.

Начиная в R2021a, можно программно прокрутить к строке, столбцу или ячейке компонента таблицы UI использование scroll функция. (Программируемая прокрутка только поддерживается, когда компонент таблицы UI находится на рисунке, созданном с uifigure функция. App Designer использует этот тип фигуры для того, чтобы создать приложения.)

Считайте демонстрационные данные о пациентах в рабочую область как табличный массив. Затем создайте компонент таблицы 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';

Table with patient data. The table rows are numbered, and the table is scrolled to the top.

Прокрутите к двадцать пятой строке таблицы.

scroll(uit,'row',25)

Table with patient data. The table is scrolled so that row 25 is the top of the visible data.

Создайте компонент таблицы UI, который отображается 10 3 массив случайных целых чисел. Data свойство задает значения, чтобы отобразиться, и Position свойство задает местоположение и размер таблицы в фигуре.

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

Table with ten rows and three columns of numerical data.

Таблица компоненты пользовательского интерфейса может вместить смесь различных типов данных через столбцы.

Создайте пустой Table Компонент пользовательского интерфейса.

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];

Table with three rows and three columns. The first column contains text, the second column contains numerical data, and the third column contains check boxes. The check boxes in the first and second rows are selected.

Установите ColumnName свойство изменить заголовки столбцов в описательные имена. Установите ColumnEditable свойство к true так, чтобы пользователи могли отредактировать данные в пользовательском интерфейсе. Когда пользователь изменяет значение в пользовательском интерфейсе, Data свойство обновляется, чтобы отразить то изменение.

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

Table with three rows and three columns. Each column has a column name above the data.

Входные параметры

свернуть все

Родительский контейнер в виде фигуры, созданной с любым figure или uifigure функция или дочерний контейнер:

  • Панели, вкладки и группы кнопок могут быть контейнерами в любом типе фигуры.

  • Размещения сетки могут быть контейнерами, только в цифрах созданный с uifigure функция.

Аргументы name-value

Пример: uitable(fig,'Data',[1 2 3; 4 5 6])

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в одинарных кавычках (' '). Можно задать несколько имен и аргументов пары значения как Name1,Value1,...,NameN,ValueN.

Примечание

Свойства, перечисленные здесь, являются подмножеством доступных свойств. Для полного списка смотрите Свойства таблиц.

Табличные данные в виде одного из следующих типов массива:

  • Табличный массив (uifigure- только основанные приложения) — Отображения любая комбинация типов данных это table поддержка массивов, такая как datetime, duration, и categorical.

  • Числовой массив — числовые значения Отображений, такие как double или single.

  • Логический массив — флажки Displays. true значения соответствуют выбранным полям, тогда как false значения отображают очищенные поля.

  • Массив ячеек — Отображения любая комбинация числовых, логических, или значения символьного массива.

  • Массив строк — символы Отображений и текст.

  • Массив ячеек из символьных векторов Символы отображений и текст.

Предотвратить предупреждения или NaN значения, которые отображаются, когда пользователи вводят недопустимые данные в редактируемую ячейку, запишите CellEditCallback функционируйте, чтобы преобразовать данные в соответствующий тип. Когда пользователь редактирует ячейку, Data обновления свойства.

Задайте табличный массив

В App Designer и приложениях создал использование uifigure функция, можно задать Data свойство как табличный массив. Табличные массивы обеспечивают удобный способ хранить табличные данные как переменную MATLAB. table, readtable, и array2table функции создают табличные массивы. В отличие от этого, uitable функция создает Table Компонент пользовательского интерфейса (компонент пользовательского интерфейса для приложения).

Когда вы задаете Data свойство Table Компонент пользовательского интерфейса как табличный массив, затем MATLAB устанавливает формат Table Компонент пользовательского интерфейса автоматически на основе значений в табличном массиве:

  • По умолчанию имена столбцов, отображенные в приложении, совпадают с VariableNames свойство табличного массива. Изменение ColumnName свойство Table Компонент пользовательского интерфейса обновляет пользовательский интерфейс, но это не обновляет имена переменных в табличном массиве.

  • По умолчанию имена строки, отображенные в приложении, совпадают с RowName свойство табличного массива. Изменение RowName свойство Table Компонент пользовательского интерфейса обновляет пользовательский интерфейс, но это не обновляет имена строки в табличном массиве.

  • Тип данных каждого табличного форматирования средств управления переменной типа массив для соответствующего столбца в приложении. При попытке установить ColumnFormat свойство, MATLAB возвращает предупреждение.

Для получения дополнительной информации об отображающихся табличных данных массива смотрите Табличные Типы данных массива в Приложениях App Designer.

Задайте числовой, логический, ячейка, массив строк или Массив ячеек из символьных векторов

Используйте ColumnFormat свойство задать формат для данных, которые являются числовым, логическим, ячейкой, или массивом строк или массивом ячеек из символьных векторов. Если данные редактируются и приводят к несоответствию между типом данных данных и ColumnFormat свойство, MATLAB преобразует данные или выводит предупреждение. Смотрите Отображение Данных Доступных для редактирования Столбцов в ColumnFormat описание свойства для получения дополнительной информации.

Ширина столбцов таблицы в виде 'auto' или как 1- n массив ячеек из символьных векторов, строки и числовые значения. \in uifigure- основанные приложения, можно дополнительно задать ширину столбца как '1x' или 'fit'.

  • Автоматические ширины — Задают 'auto' чтобы иметь MATLAB вычисляют ширины столбцов автоматически с помощью нескольких факторов, одним из которых является ColumnName значение свойства.

  • Подходящие ширины к содержимому (uifigure- только основанные приложения) — Задают значение 'fit' сконфигурировать столбцы, чтобы строго настроить ширины, чтобы соответствовать именам столбцов и данным. Эта установка позволяет более узкие столбцы, чем 'auto' делает.

  • Универсальные ширины (uifigure- только основанные приложения) — Задают значение '1x' сделать все столбцы той же шириной, деля свободное место одинаково.

  • Фиксированные ширины — Задают массив ячеек числовых значений, которые задают ширину столбцов в пиксельных модулях.

  • Комбинации — можно объединить ширины зафиксированного и переменного столбца в массиве ячеек. Каждый элемент в массиве ячеек соответствует столбцу в таблице. Если массив ячеек, который вы задаете, имеет меньше значений, чем количество столбцов, то столбцы без заданного значения сохраняют значение по умолчанию 'auto'. Если массив имеет больше значений, чем количество столбцов, MATLAB игнорирует дополнительные значения.

  • Взвешенные переменные ширины (uifigure- только основанные приложения) — Задают массив ячеек с векторами символов или строками, состоявшими из номера, конкатенированного с 'x' (например, '2x', '3x', и т.д.). The X Factor каждого столбца устанавливает ту ширину столбца пропорционально относительно других с фактором для остающегося пространства в таблице UI.

Пример: uit = uitable(uifigure,'ColumnWidth','auto','Data',[1 2 3;4 5 6])

Пример: uit = uitable(uifigure,'ColumnWidth','fit','Data',[1 2 3;4 5 6])

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

Пример: uit = uitable(uifigure,'ColumnWidth',{'2x','1x','1x'},'Data',[1 2 3;4 5 6])

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

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

Способность отредактировать ячейки столбца в виде:

  • Пустой логический массив ([]) — Никакие столбцы не доступны для редактирования.

  • Логическое массив — Этот массив задает, какие столбцы доступны для редактирования. Значение n равно количеству столбцов в таблице. Каждое значение в массиве соответствует столбцу таблицы. Значение true в массиве делает ячейки в том столбце доступными для редактирования. Значение false делает ячейки в том столбце недоступными для редактирования. Если массив имеет больше значений, чем количество столбцов, MATLAB игнорирует избыточные значения. Если массив имеет меньше значений, чем количество столбцов, то столбцы без заданного значения не доступны для редактирования.

  • Логический скаляр — целая таблица доступна для редактирования или недоступна для редактирования.

Когда пользователь редактирует ячейку, Data обновления свойства.

Пример: uit = uitable(uifigure,'Data',rand(10,3),'ColumnEditable',[false true true])

Пример: uit = uitable(uifigure,'Data',rand(10,3),'ColumnEditable',false)

Чтобы позволить пользователям взаимодействовать со средствами управления в столбцах таблицы, которые содержат флажки или всплывающие меню, установите ColumnEditable свойство к true.

Если Data свойство является табличным массивом, затем любые переменные, которые являются многостолбцовыми или содержат недоступные для редактирования типы данных, как duration, не доступны для редактирования в запущенном приложении даже когда ColumnEditable свойством является true. Табличные переменные типа массив, которые содержат смешанные типы данных в массиве ячеек, доступны для редактирования в запущенном приложении, пока типы данных доступны для редактирования.

Функция обратного вызова редактирования ячейки в виде одного из этих значений:

  • Указатель на функцию.

  • Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.

  • Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Используйте эту функцию обратного вызова, чтобы выполнить вычисления или подтвердить вход, когда пользователь приложения изменит содержимое ячейки таблицы.

Эта функция обратного вызова может получить доступ к определенной информации о взаимодействии пользователя с ячейкой (такой как индексы ячейки). MATLAB передает эту информацию в CellEditData возразите в качестве второго аргумента против своей функции обратного вызова. В App Designer аргумент называется событиемВы можете запросить свойства объекта с помощью записи через точку. Например, event.Indices возвращает индексы выбранной ячейки. CellEditData объект не доступен для функций обратного вызова, заданных как векторы символов.

Следующая таблица описывает свойства CellEditData объект.

Свойство

Описание

Indices

Это 1 2 массив, содержащий индексы строки и столбца ячейки пользователь, отредактированный в запущенном приложении. Когда столбец сортируется, Indices возвращает оригинал 1 2 массив ячейки, прежде чем это было отсортировано — DisplayIndices возвращает новое местоположение отредактированной ячейки, которая отображается визуально в отсортированной таблице.

DisplayIndices

Это 1 2 массив, содержащий индексы строки и столбца, соответствующие местоположению отредактированной ячейки в отображении отсортированной таблицы. Если пользователь не сортирует столбцы, то DisplayIndices имеет то же содержимое как Indices свойство.

PreviousData

Это - предыдущие данные о ячейке. Значением по умолчанию является пустая матрица, [].

EditData

Это - вводимое пользователями значение.

NewData

Это - значение, которое MATLAB записал в Data массив свойства.

NewData свойство пусто, если MATLAB обнаруживает ошибку во вводимых пользователями данных.

Error

Это - сообщение об ошибке, возвращенное, если MATLAB обнаруживает ошибку во вводимых пользователями данных.

Error свойство пусто, когда MATLAB успешно пишет значение в Data свойство.

Если Error свойство не пусто, затем CellEditCallback может отобразить сообщение, или оно может попытаться решить проблему.

Source

Компонент, выполняющий коллбэк.

EventName

'CellEdit'.

Когда пользователь редактирует ячейку таблицы, MATLAB выполняет эти шаги:

  1. Попытки сохранить новое значение в Data свойство таблицы

  2. Вызывает CellEditCallback функция (если это существует),

Если результаты значения по ошибке и нет никакого CellEditCallback функция, затем данные о ячейке возвращаются к своему предыдущему значению и никаким ошибочным отображениям.

Для получения дополнительной информации о записи коллбэков, смотрите Коллбэки Записи в App Designer.

Местоположение и размер таблицы в виде четырехэлементного вектора из формы [left bottom width height]В этой таблице описываются каждый элемент в векторе.

ЭлементОписание
leftРасстояние от внутреннего левого края родительского контейнера к внешнему левому краю таблицы
bottomРасстояние от внутреннего базового края родительского контейнера к внешнему базовому краю таблицы
widthРасстояние между правыми и левыми внешними краями таблицы
heightРасстояние между верхними и нижними внешними краями таблицы

Все измерения находятся в модулях, заданных Units свойство.

Position значения относительно drawable area родительского контейнера. Область векторной и растровой графики является областью в границах контейнера и не включает область, занятую художественными оформлениями, такими как панель меню или заголовок.

Единицы измерения в виде одного из значений в этой таблице.

Модульное значениеОписание
'pixels' (значение по умолчанию)

Расстояния в пикселях независимы от вашего системного разрешения по Windows® и системы Макинтоша:

  • В системах Windows пиксель составляет 1/72 дюйма.

  • В системах Macintosh пиксель составляет 1/72 дюйма.

На Linux® системы, размер пикселя определяется вашим системным разрешением.

'normalized'

Эти модули нормированы относительно родительского контейнера. Нижний левый угол контейнера сопоставляет с (0,0) и верхний правый угол сопоставляет с (1,1).

'inches''inches'.
'centimeters''centimeters'.
'points''points'. Одна точка равняется 1/72-й из дюйма.

Рекомендуемым значением является 'pixels', потому что большая часть функциональности создания приложений MATLAB измеряет расстояния в пикселях. Можно составить таблицу, которая перемасштабирует на основе размера родительского контейнера путем порождения таблицы менеджеру по размещению сетки, созданному с помощью uigridlayout функция. Для получения дополнительной информации смотрите, Размечают Приложения Программно.

figure- Основанные Приложения

Для таблиц в приложениях, созданных с помощью figure функция, значение по умолчанию Units 'normalized'.

Кроме того, можно задать Units как 'characters'. Символьные модули основаны на шрифте uicontrol по умолчанию графического корневого объекта:

  • Ширина символов = ширина буквы x.

  • Высота символа = расстояние между базовыми линиями двух строк текста.

Чтобы получить доступ к шрифту uicontrol по умолчанию, используйте get(groot,'defaultuicontrolFontName') или set(groot,'defaultuicontrolFontName').

Введенный в R2008a