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

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

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

Функция uitable составляет пустую таблицу. Можно заполнить таблицу путем установки свойства Data. Например, можно составить таблицу, содержащую значения магического квадрата.

f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200], 'Data', magic(10))

t = 
  Table with properties:

                Data: [10x10 double]
         ColumnWidth: 'auto'
      ColumnEditable: []
    CellEditCallback: ''
            Position: [25 50 700 200]
               Units: 'pixels'

  Show all properties

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

Отобразите смешанные типы данных путем установки свойства Data на массив ячеек.

load patients LastName Age Weight Height SelfAssessedHealthStatus                   % load data
PatientData = [LastName num2cell([Age Weight Height]) SelfAssessedHealthStatus];    % convert to cell array

t.Data = PatientData;

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

Можно настроить отображение таблицы несколькими способами. Используйте свойство ColumnName добавить заголовки столбцов. Чтобы создать многострочные заголовки, используйте канал (|) символ.

t.ColumnName = {'LastName', 'Age', 'Weight', 'Height', 'Self Assessed|Health Status'};

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

t.ColumnWidth = {100, 'auto', 'auto', 'auto', 150};

Чтобы удалить имена строки, установите свойство RowName на пустой массив ([]).

t.RowName = [];

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

t.Position = [15 25 495 200];

По умолчанию таблицы используют чередование строки. Чтобы выключить чередование строки, установите свойство RowStriping на 'off'. Чтобы управлять цветами дорожек, выберите два различных цвета для свойства BackgroundColor. Используйте свойство ForegroundColor управлять цветом текста.

t.BackgroundColor = [.4 .4 .4; .4 .4 .8];  
t.ForegroundColor = [1 1 1];

Ограничение редактирования значений ячеек

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

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

Изменение формата столбца

Средства управления свойством ColumnFormat, как данные отображены и отредактированы. Чтобы задать выбор в выпадающем списке, задайте массив ячеек из символьных векторов как формат столбца. В этом примере Сам Оцененный столбец Состояния здоровья имеет выпадающий список, содержащий четыре опции: Excellent, Fair, Good и Poor.

t.ColumnFormat = {[] [] [] [] {'Excellent', 'Fair', 'Good', 'Poor'}};

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

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

t.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(t)
          BackgroundColor: [2x3 double]
             BeingDeleted: 'off'
               BusyAction: 'queue'
            ButtonDownFcn: ''
         CellEditCallback: @ageCheckCB
    CellSelectionCallback: ''
                 Children: [0x0 handle]
           ColumnEditable: [0 1 1 1 1]
             ColumnFormat: {[]  []  []  []  {1x4 cell}}
               ColumnName: {5x1 cell}
           ColumnSortable: []
              ColumnWidth: {[100]  'auto'  'auto'  'auto'  [150]}
                CreateFcn: ''
                     Data: {100x5 cell}
                DeleteFcn: ''
              DisplayData: {100x5 cell}
    DisplayDataChangedFcn: ''
                   Enable: 'on'
                   Extent: [0 0 479 1740]
                FontAngle: 'normal'
                 FontName: 'Helvetica'
                 FontSize: 10
                FontUnits: 'points'
               FontWeight: 'normal'
          ForegroundColor: [1 1 1]
         HandleVisibility: 'on'
            InnerPosition: [15 25 495 200]
            Interruptible: 'on'
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                   Layout: [0x0 matlab.ui.layout.LayoutOptions]
            OuterPosition: [15 25 495 200]
                   Parent: [1x1 Figure]
                 Position: [15 25 495 200]
     RearrangeableColumns: 'off'
                  RowName: ''
              RowStriping: 'on'
                      Tag: ''
                  Tooltip: ''
                     Type: 'uitable'
            UIContextMenu: [0x0 GraphicsPlaceholder]
                    Units: 'pixels'
                 UserData: []
                  Visible: 'on'