使用 `set` 函数的函数句柄 MATLAB
Function handle using `set` function MATLAB
我在 MATLAB 应用程序中从事 GUI 方面的工作。
我使用 uitable
object. Then I find interesting undocumented feature 如何对其数据进行排序,select 整行等
我是这样做的:
% 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 handles
放入其中。但是怎么办?
我的CellSelectionCallback
函数:
function CellSelectionCallback(juiTable, varargin)
% get it from the example
row = get(juiTable,'SelectedRow')+1;
fprintf('row #%d selected\n', row);
P.S。我看到了varargin
。那么我可以使用多个参数吗?如何使用我的 set
函数放置它?
默认情况下,MATLAB 回调传递两个输入参数(生成回调的对象和一些事件数据)。如果您想将更多(或更少)参数传递给您的回调,您可以使用匿名函数来接受这两个输入,然后使用所需的输入调用您的回调。
对于您的情况,您可以编写匿名函数,将 handles
对象作为附加输入传递给回调函数
set(juiFunHandle, 'MousePressedCallback', ...
@(src, evnt)CellSelectionCallback(src, evnt, handles));
那么您的回调将类似于:
function CellSelectionCallback(jtable, evntdata, handles)
我在 MATLAB 应用程序中从事 GUI 方面的工作。
我使用 uitable
object. Then I find interesting undocumented feature 如何对其数据进行排序,select 整行等
我是这样做的:
% 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 handles
放入其中。但是怎么办?
我的CellSelectionCallback
函数:
function CellSelectionCallback(juiTable, varargin)
% get it from the example
row = get(juiTable,'SelectedRow')+1;
fprintf('row #%d selected\n', row);
P.S。我看到了varargin
。那么我可以使用多个参数吗?如何使用我的 set
函数放置它?
默认情况下,MATLAB 回调传递两个输入参数(生成回调的对象和一些事件数据)。如果您想将更多(或更少)参数传递给您的回调,您可以使用匿名函数来接受这两个输入,然后使用所需的输入调用您的回调。
对于您的情况,您可以编写匿名函数,将 handles
对象作为附加输入传递给回调函数
set(juiFunHandle, 'MousePressedCallback', ...
@(src, evnt)CellSelectionCallback(src, evnt, handles));
那么您的回调将类似于:
function CellSelectionCallback(jtable, evntdata, handles)