【发布时间】:2016-08-18 16:39:43
【问题描述】:
我有一个按钮组,里面有 3 个单选按钮,还有一个显示部分。
我想要的效果是,一旦选择了一个单选按钮,显示部分也会改变。
我使用一个类来实现它,并在创建这些组件时添加SelectionChangedFcn:
app.ControlButtonGroup.SelectionChangedFcn = {@controlBtnGroupSelectionChanged, app}
我在保存createComponents.m函数文件的同一个文件中定义了函数controlBtnGroupSelectionChanged(obj, eventData, app)。
但是当我点击不同的收音机时,错误信息如下:
用于输入的未定义函数“controlBtnGroupSelectionChanged” “matlab.ui.container.ButtonGroup”类型的参数。出错时 评估 ButtonGroup SelectionChangedFcn
我还将controlBtnGroupSelectionChanged 函数声明为我的类中的私有方法。
controlBtnGroupSelectionChanged 函数如下:
function controlBtnGroupSelectionChanged(obj, eventData, app)
% Update display section as the radio button in control section is changed
%new = app.ControlButtonGroup.NewValue;
new = obj.SelectedObject.String;
switch new
case 'Transfer Path'
% display the transfer path
imagesc(app.curImage,'Parent',app.DisplayPath);
app.DisplayPath.Visible = 'off';
case 'Store'
% display the store text
text(curStore,'Parent',app.DisplayPath);
case 'Mill'
% Display the Mill text
text(curMill,'Parent',app.DisplayPath);
end
end
类中定义的部分如下:
methods (Access = private)
% Create UIFigure and components
createComponents(app);
% Callback function for Control Button Group Selection Changed
controlBtnGroupSelectionChanged(obj, eventData, app);
end
而createComponents函数中与此相关的部分是:
app.ControlButtonGroup = uibuttongroup(app.UIFigure);
app.ControlButtonGroup.Title = 'Control';
app.ControlButtonGroup.FontSize = 16;
app.ControlButtonGroup.Units = 'Normalized';
app.ControlButtonGroup.Position = [0.45 0.75 0.45 0.2];
app.ControlButtonGroup.SelectionChangedFcn = {@controlBtnGroupSelectionChanged,app};
为什么说我的函数未定义?
更新: 我经历了一些其他的演示,并将回调更改为 app.ControlButtonGroup.SelectionChangedFcn = @(h, e)controlBtnGroupSelectionChanged(app)。并定义(也是原型)它就像 controlBtnGroupSelectionChanged(app)。然后就可以了。所以我想问题应该是关于参数的数量,但我仍然没有找到太多的详细信息。任何提示表示赞赏!
【问题讨论】:
-
你确定你的函数名没有错别字吗?发布实际文件也会对您有所帮助。
-
是的,我复制了这个名字以防万一我没有打错字。我只是仔细检查了它
-
我想知道从另一个私有方法调用私有方法是否有问题?
-
当我在 MATLAB 命令行中键入“which controlBtnGroupSelectionChanged”时,它会显示 C:\Users\mxie\Desktop\AnalyticalEngine(OOP)\@DisplayPanel\controlBtnGroupSelectionChanged.m % DisplayPanel 方法。所以它被定义并且应该被认可。
-
在下面添加了答案和描述。
标签: matlab oop event-listener