使用“set”函数MATLAB的函数句柄

使用“set”函数MATLAB的函数句柄,matlab,user-interface,matlab-guide,function-handle,Matlab,User Interface,Matlab Guide,Function Handle,我在MATLAB应用程序的GUI中工作。 我使用对象。然后我发现如何对数据进行排序、选择整行等等都很有趣 我这样做: % create jhandle to my uitable object juiTable = findjobj(handles.uitable1,'class','UIScrollPane'); jtable = juiTable(1).getComponent(0).getComponent(0); %... some my action like this: jtable

我在MATLAB应用程序的GUI中工作。 我使用对象。然后我发现如何对数据进行排序、选择整行等等都很有趣

我这样做:

% create jhandle to my uitable object
juiTable = findjobj(handles.uitable1,'class','UIScrollPane');
jtable = juiTable(1).getComponent(0).getComponent(0);
%... some my action like this:
jtable.setRowSelectionAllowed(true);
%...

%and now lets try use callback for selected cell in uitable:
juiFunHandle = handle(jtable, 'CallbackProperties');

set(juiFunHandle, 'MousePressedCallback', @CellSelectionCallback);
set(juiFunHandle, 'KeyPressedCallback', @CellSelectionCallback); 
那很好用

现在问题:如何将多个参数放入
CellSelectionCallback
? 我想这个功能使一些行动(使一些按钮活跃等)。 为此,我尝试将GUI
句柄添加到它。但是怎么做呢

My
CellSelectionCallback
函数:

function CellSelectionCallback(juiTable, varargin)
% get it from the example
row = get(juiTable,'SelectedRow')+1;
fprintf('row #%d selected\n', row);

另外,我看到它里面有
varargin
。那么我可以使用多个参数吗?如何使用my
set
函数进行设置默认情况下,MATLAB回调传递两个输入参数(生成回调的对象和一些事件数据)。如果要向回调传递更多(或更少)参数,可以使用匿名函数接受这两个输入,然后使用所需的输入调用回调

在本例中,您可以编写匿名函数,以便将
句柄
对象作为附加输入传递给回调函数

set(juiFunHandle, 'MousePressedCallback', ...
    @(src, evnt)CellSelectionCallback(src, evnt, handles));
然后,您的回调将类似于:

function CellSelectionCallback(jtable, evntdata, handles)

啊,当然!就像使用普通的匿名函数一样使用它!顺便说一句,我可以使用
函数CellSelectionCallback(juiTable,varargin)
,然后使用
varargin{2}
@Mikhail\u Sam当然你也可以这样做,我更喜欢显式输入,而不是
varargin
,所以我已经将其作为一种替代方法。