Этот пример показывает, как составить таблицу в приложении с помощью функции 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'