Программное приложение, который Отображения Таблица

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

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

uitable функция составляет пустую таблицу UI в фигуре.

fig = uifigure('Position',[100 100 752 250]);
uit = uitable('Parent',fig,'Position',[25 50 700 200]);

Составьте таблицу, содержащую смешанные типы данных

Загрузите демонстрационные данные пациентов, которые содержат смешанные типы данных, и сохраните их в табличном массиве. Чтобы иметь данные появляются как выпадающий список в ячейках табличного компонента, преобразуют переменную массива ячеек в категориальный массив. Чтобы отобразить данные в компоненте таблицы UI, задайте табличный массив как значение Data свойство.

load patients
t = table(LastName,Age,Weight,Height,Smoker,SelfAssessedHealthStatus);
t.SelfAssessedHealthStatus = categorical(t.SelfAssessedHealthStatus,{'Poor','Fair','Good','Excellent'}, ...
    'Ordinal',true);

uit.Data = t;

Настройка отображения

Можно настроить отображение таблицы UI несколькими способами. Используйте ColumnName свойство добавить заголовки столбцов.

uit.ColumnName = {'Last Name','Age','Weight','Height','Smoker','Health Status'};

Чтобы настроить ширины столбцов, задайте ColumnWidth свойство. ColumnWidth свойство является массивом ячеек 1 на n, где N является количеством столбцов в таблице. Установите определенную ширину столбца или используйте 'auto' позволять MATLAB® установить ширину на основе содержимого.

uit.ColumnWidth = {'auto',75,'auto','auto','auto',100};

Добавьте пронумерованные заголовки строк путем установки RowName свойство к 'numbered'.

uit.RowName = 'numbered';

Измените местоположение и измените размер таблицы с помощью Position свойство.

uit.Position = [15 25 565 200];

По умолчанию компоненты таблицы UI используют чередование строки и цикл через заданные цвета фона, пока конец таблицы не достигнут. Если вы устанавливаете RowStriping свойство к 'off', компонент таблицы UI будет только использовать первый цвет, заданный в BackgroundColor свойство для всех строк. Здесь, оставьте строку, чередующую 'on' и выбранный три различных цвета для BackgroundColor свойство.

uit.BackgroundColor = [1 1 .9; .9 .95 1;1 .5 .5];

Включите сортировку столбца и ограничьте редактирование значений ячеек

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

uit.ColumnSortable = true;

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

uit.ColumnEditable = [false false true true true true];

Создание обратного вызова

Table объект имеет два обычно используемых коллбэка. CellSelectionCallback выполняется, когда пользователь выбирает различную ячейку. CellEditCallback выполняется, когда пользователь изменяет значение в ячейке.

uit.CellEditCallback = @ageCheckCB;

Например, если вы хотите, чтобы столбец Возраста содержал значения между 0 и 120, установите CellEditCallback к функции, такой как этот:

function ageCheckCB(src,eventdata)
if (eventdata.Indices(2) == 2 && ...                  % check if column 2
      (eventdata.NewData < 0 || eventdata.NewData > 120))
   tableData = src.Data;
   tableData{eventdata.Indices(1),eventdata.Indices(2)} = eventdata.PreviousData;
   src.Data = tableData;                              % set the data back to its original value
   warning('Age must be between 0 and 120.')          % warn the user
end
end

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

Получение всех свойств таблиц

Чтобы видеть все свойства таблицы, используйте get команда.

get(uit)
          BackgroundColor: [3x3 double]
             BeingDeleted: 'off'
               BusyAction: 'queue'
            ButtonDownFcn: ''
         CellEditCallback: @ageCheckCB
    CellSelectionCallback: ''
                 Children: [0x0 handle]
           ColumnEditable: [0 0 1 1 1 1]
             ColumnFormat: {}
               ColumnName: {6x1 cell}
           ColumnSortable: 1
              ColumnWidth: {'auto'  [75]  'auto'  'auto'  'auto'  [100]}
                CreateFcn: ''
                     Data: [100x6 table]
                DeleteFcn: ''
              DisplayData: [100x6 table]
    DisplayDataChangedFcn: ''
                   Enable: 'on'
                   Extent: [0 0 0 0]
                FontAngle: 'normal'
                 FontName: 'Helvetica'
                 FontSize: 12
                FontUnits: 'pixels'
               FontWeight: 'normal'
          ForegroundColor: [0 0 0]
         HandleVisibility: 'on'
            InnerPosition: [15 25 565 200]
            Interruptible: 'on'
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                   Layout: [0x0 matlab.ui.layout.LayoutOptions]
            OuterPosition: [15 25 565 200]
                   Parent: [1x1 Figure]
                 Position: [15 25 565 200]
     RearrangeableColumns: 'off'
                  RowName: 'numbered'
              RowStriping: 'on'
      StyleConfigurations: [0x3 table]
                      Tag: ''
                  Tooltip: ''
                     Type: 'uitable'
            UIContextMenu: [0x0 GraphicsPlaceholder]
                    Units: 'pixels'
                 UserData: []
                  Visible: 'on'