Esta página es para la versión anterior. La página correspondiente en inglés se eliminó en la versión actual.

Crear mediante programación una interfaz de usuario con una tabla gráfica

En este ejemplo se muestra cómo crear una tabla gráfica en una interfaz de usuario mediante uitable. También muestra cómo modificar la apariencia de la tabla y cómo restringir los cambios que los usuarios pueden hacer a los datos de la tabla.

Crear tabla gráfica con datos numéricos simples

La función uitable crea una tabla gráfica vacía. Puede rellenar la tabla estableciendo la propiedad Data. Por ejemplo, configure los datos mostrados como un cuadrado mágico.

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'    Use GET to show all properties  

Crear tabla gráfica con datos de tipo mixto

Mostrar datos de tipo mixto estableciendo la propiedad Data en una matriz de celdas.

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

Personalizar la pantalla

Puede personalizar la visualización de una tabla de varias maneras. Utilice la propiedad ColumnName para agregar encabezados a la parte superior de cada columna. Para crear encabezados de varias líneas, utilice el símbolo de la línea divisoria.

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

Para ajustar los anchos de las columnas, utilice la propiedad ColumnWidth. La propiedad ColumnWidth es una matriz de celdas 1 por N donde N es el número de columnas de la tabla. Puede elegir establecer un ancho específico para las columnas o Autoajustar el ancho basándose en el contenido.

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

Para eliminar por completo los nombres de fila, establezca la propiedad RowName en vacío mediante [].

t.RowName = []; 

Puede cambiar el tamaño de la tabla para eliminar cualquier espacio adicional mediante la propiedad Position.

t.Position = [15 25 495 200]; 

De forma predeterminada, las tablas utilizan bandas de filas. Para desactivar las bandas de filas, establezca la propiedad RowStriping en 'off'. Para controlar los colores de las franjas de fila, defina dos colores diferentes para la propiedad BackgroundColor. Utilice la propiedad ForegroundColor para controlar el color del texto.

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

Restringir la edición de valores de celda

Para restringir la capacidad de los usuarios para editar datos en las columnas de la tabla, establezca la propiedad ColumnEditable. De forma predeterminada, los datos no se pueden editar. Establecer la propiedad ColumnEditable en true para una columna permite editar los datos de esa columna.

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

Cambiar formato de columna

La propiedad ColumnFormat controla cómo se muestran y editan los datos para cada columna. Para especificar opciones para un menú emergente, utilice una matriz de celdas de cadenas como formato de columna. En este ejemplo, la columna Estado de salud auto-evaluado utiliza un menú emergente con cuatro opciones: Excellent, Fair, Good y Poor.

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

Crear devolución de llamada

El objeto Table tiene dos devoluciones de llamada comúnmente utilizadas. Se llama al CellSelectionCallback cuando el usuario cambia la celda seleccionada actualmente en la tabla. Se llama al CellEditCallback cuando el usuario cambia un valor en una celda.

t.CellEditCallback = @ageCheckCB; 

Por ejemplo, si desea que la columna Age contenga valores que deben estar entre 0 y 120, establezca el CellEditCallback en una función con este formato:

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 

Si un valor introducido en la columna Age está fuera del intervalo aceptable, la función de devolución de llamada emitirá una advertencia y establecerá el contenido de la celda de nuevo en el valor original.

Obtener todas las propiedades de la tabla

Los objetos gráficos en Matlab tienen muchas propiedades. Para ver todas las propiedades de un objeto Table, utilice el comando 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}               ColumnWidth: {[100]  'auto'  'auto'  'auto'  [150]}                 CreateFcn: ''                      Data: {100x5 cell}                 DeleteFcn: ''                    Enable: 'on'                    Extent: [0 0 479 1940]                 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: ''             OuterPosition: [15 25 495 200]                    Parent: [1x1 Figure]                  Position: [15 25 495 200]      RearrangeableColumns: 'off'                   RowName: ''               RowStriping: 'on'                       Tag: ''             TooltipString: ''                      Type: 'uitable'             UIContextMenu: [0x0 GraphicsPlaceholder]                     Units: 'pixels'                  UserData: []                   Visible: 'on'