Help creating a GUI for a uitable where the user can select what gets displayed on a graph.

조회 수: 1 (최근 30일)
I have a script that displays a table with the option for a user to check up to three boxes. When one of the boxes gets checked, I want a certain function corresponding to the name on the table to be displayed on a graph. The code reads as follows and the issue is, I don't know the syntax to say "if box is checked graph such and such" because I don't know how matlab interprets whether it is checked or not.
% Creates a table where the user can select options by clicking a box.
f = figure;
t = uitable(f);
t.ColumnName = {'Function','Value'};
t.ColumnEditable = true;
d = {'Sin(x)',true;'Cos(x)',false;'Tan(x)',true};
t.Data = d;
t.position = [100 100 28 78];

채택된 답변

Geoff Hayes
Geoff Hayes 2017년 6월 2일
Kyle - you need to assign a callback to your uitable so that when a cell is selected, you perform some action depending upon the cell. See uitable properties and in particular the section for CellSelectionCallback — Cell selection callback function.
A R2014a example (which will be slightly different from yours since you are on a later version of MATLAB than me) would be to
function createMyTable
f = figure('Position',[100 100 300 100]);
tableData={'Sin(x)', false; 'Cos(x)', false; 'Tan(x)', false};
columnNames = {'Function', 'Value'};
t = uitable('Units','normalized','Position',...
[0.1 0.1 0.9 0.9], 'Data', tableData,...
'ColumnName', columnNames, ...
'ColumnEditable', true,...
'CellSelectionCallback', @onCellSelected);
end
function onCellSelected(hObject, data)
fprintf('selecting cell (%d,%d)\n', data.Indices(1), data.Indices(2));
end
  댓글 수: 5
Kyle Reagan
Kyle Reagan 2017년 6월 6일
Walter, thank you for the help. I want multiple plots to appear on the same figure at the same time. I feel like the figure of the table is covering the actual plot of the lines, so I really just want a way to send the table to the back. I edited the above code a little to include "figure(2)" before both of the "hold on" commands and now it has the table in figure 1 and both plots displayed in figure 2 when they are checked. If there isn't a simple fix to sending the table to the back then I will just keep this format.
Kyle Reagan
Kyle Reagan 2017년 6월 6일
I actually just found the solution. The 'position' [.1 .1 .9 .9] was so large that it covered the whole figure. I changed it to [.8 .8 .2 .2] which moved the table to the top right corner and now the graph is visible underneath. Thanks to all for the help!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by