MATLAB: Specify Cell in GUI Table

guimatlab guitableuitable

Hello MATLABers!
I am currently updating some software and I decided to add a table. In the table, I want certain cells to grab certain data numbers. For example, my table will have two columns and 4 rows. I would like the second column and third row to output the time my function takes to run. I am familiar with the set function for normal callbacks.
For example: set(handles.textBox, 'String', message);
Is there a method similar to this with tables? Any advice is welcome 😀

Best Answer

  • A uitable is just storing the data in a Property named 'Data'. I show two examples, one for a matrix and the other a cell array, for syntax prior to and after the 2014b release.
    f1 = figure;
    myCellTable = uitable(f1,'Data',cell(4,2));
    myCellTable.Data{3,2} = 10; % This could be a call to the toc function for time
    f2 = figure;
    myMatTable = uitable(f2,'Data',zeros(4,2));
    myMatTable.Data{3,2} = 10;
    So the basic idea is the uitable is an object and we can index it's property with dot-notation (post 2014b). Prior to 2014b we need to get, modify and set, like oyu show above.
    f3 = figure;
    myCellTable = uitable(f3,'Data',cell(4,2));
    CellData = get(myCellTable,'Data');
    CellData{3,2} = 10;
    set(myCellTable,'Data',CellData);
    f4 = figure;
    myMatTable = uitable(f4,'Data',zeros(4,2));
    MatData = get(myMatTable,'Data');
    MatData(3,2) = 10;
    set(myMatTable,'Data',MatData);
    Edit: Note that the latter syntax still works post 2014b.