我想迭代图中的uicontrol切换按钮,因此递归函数可以检查相邻的uicontrol切换按钮并相应地修改它们。
我在图中创建了一个uicontrol togglebutton网格,如下所示: function create_field(hparent,numX,numY,width,padding)
set(hparent, 'Units', 'pixels');
ppos = get(hparent, 'Position');
ppos(3) = numX*width + (numX-1)*padding;
ppos(4) = numY*width + (numY-1)*padding;
set(hparent, 'Position', ppos);
for i = 1:numX
for j = 1:numY
bPos = [ % Button spec:
(i-1)*(width+padding) % - X
(j-1)*(width+padding) % - Y
width % - W
width % - H
];
uicontrol( ...
'Units', 'pixels', ...
'Tag', sprintf('X%dY%dS%d',i,j,state), ...
'Style', 'togglebutton', ...
'Parent', hparent, ...
'Position', bPos, ...
'Callback', @reveal ...
);
end;
end;
end
无论如何都要在创建之后迭代uicontrols?或者,如果不可能,我如何将uicontrolls从单元格数组添加到图中?
答案 0 :(得分:1)
你可以使用findobj
......
例如,这里是如何仅在图中找到所有切换按钮:
toggleBtns = findobj(myFig, 'Style', 'togglebutton');
修改强>
或者,您可以按建议保存单元格数组中的所有切换按钮句柄,然后稍后使用guidata
找回它们:
% Create buttons
cellToggleBtns{end+1} = uicontrols(...);
% Save their handles within figure data
data = guidata(fig);
data.AllToggleBtns = cellToggleBtns;
guidata(fig, data);
稍后在代码或回调中:
% Retreive toggle buttons handles
data = guidata(fig);
toggleBtns = data.AllToggleBtns;