如何通过推送一个合适的东西来运行回调?

时间:2014-06-02 14:57:48

标签: matlab matlab-uitable

我有一个gui,通过按一个按钮返回一个文件名数组。该数组显示在表格中。我使用了那段代码:

f=figure('Position',[150 150 700 350]);
t=uitable('Parent',f,'Position' ,[25 25 700 200]);
set(t,'Data',handles.result_filenames');

例如,这会返回6行,每行包含特定文件夹中的文件名。我想要的是从表中找到一种方法,用它来激发文件的动画。我有代码回调对于动画。

总而言之,我想要,例如,推送文件名,或文件名行的编号,或者在表中调用动画回调的其他内容。是否有可能?任何想法都会有所帮助。

到目前为止,我使用了以下代码:

f=figure('Position', [100, 200, 600, 460],...
'Name', 'Results-filenames',... % Title figure
'NumberTitle', 'off',... % Do not show figure number
'MenuBar', 'none'); % Hide standard menu bar menus


t=uitable('Parent',f,'Position' ,[50 100 300 230],...
    'Data',handles.result_filenames',...
    'ColumnWidth',{300},...
    'ColumnEditable', false,...
    'ToolTipString',...
    'Select cells to highlight them on the plot',...
    'ColumnName',{'filenames'},...
    'CellSelectionCallback','animate(variables)');

因此,当我选择一行(文件名)时,select_callback函数会在另一个图中执行文件名的动画(我必须工作的东西)。

1 个答案:

答案 0 :(得分:2)

您可以添加一个按钮来启动动画:

tb = uitoolbar(f);
uipushtool(tb,'ClickedCallback',@yourFunction);

或者设置'CellSelectionCallback'以便在选择时运行回调 - 搜索标记,您会发现很多示例如何执行此操作。

基本上:

f = figure('Position',[150 150 700 350]);
t = uitable('Parent',f,'Position' ,[25 25 700 200]);
set(t,'Data',handles.result_filenames');

set(t,'CellSelectionCallback',@yourFunction);

或制作精美的下拉菜单 - 这样您就可以点击文件名并在不同的选项中进行选择。然后你需要'CellEditCallback'

function fancyUitable
selector = { 'Start animation'; 'Go to folder' ; 'Call police' };

h = figure('Position',[200 100 268 120],'numbertitle','off','MenuBar','none');
defaultData =  repmat( {'select main option...'} );
columnformat = { {selector{:}} };
t = uitable(h,'Units','normalized','Position',[0 0 1 1],...
              'Data', defaultData,... 
              'ColumnFormat', columnformat,...  
              'CellEditCallback',@chooseOption);
end

function chooseOption(~,evt_edit)
%// evaluate callback and determine which option was chosen, call your function
end