Setting different Cell-Formats in a Matlab uitable

matheburg picture matheburg · Apr 24, 2013 · Viewed 7k times · Source

I am looking for a way to handle different type of data in one column of a Matlab uitable.

Usually uitable is used to set whole columns to the same data type, such as logical (gives a checkboxes), char (gives left-aligned text), numeric (gives right-aligned number) or a 1xn-cell-array (gives pop-up menus with different choices).

It is set using the columnformat property of uitable, e.g.

columnformat = {'numeric', 'logical', {'Fixed' 'Adjustable'}}; % 3 columns

You can find an example at matlab documentation.

I am looking for a way to set the format for single cells to realize something like this:

different cell formats in a uitable

Answer

JonB picture JonB · Apr 25, 2013

Matlab's uitable is a crippled version of an underlying JIDE table.
It is possible to get to the underlying java (see findjobj in file exchange), but that requires a lot of work. Yair Altman's undocumented matlab site is a good starting place for understanding the java side of matlab.

It sounds like you want something like a property editor, as opposed to a generic UI table -- i.e. properties listed in first column, property value editable in second column. There are a few "off the shelf" versions in the file exchange, which use JIDE:

See propertiesgui, or property-grid for mostly functional examples. The second example is easier to use -- you simply provide a class or struct, and it creates the proper field entry format. The first one offers more choices -- like color boxes, drop downs, etc, but requires you to be more involved in specifying how things behave.