如何在 MATLAB 中声明 uicontrol 对象的继承
How to declare inheritance of uicontrol objects in MATLAB
我正在学习如何使用图形用户界面在 MATLAB 中以编程方式创建应用程序。我正在使用 MATLAB 2015a。
我不明白为什么会出现此错误:
Error using GuiTitle
The specified superclass 'uicontrol' contains a parse error, cannot be found on MATLAB's search path, or
is shadowed by another file with the same name.
我正在尝试创建一个名为 GuiTitle 的 class,它具有 uicontrol 作为超级class。我的 class GuiTitle 看起来像这样:
classdef GuiTitle < uicontrol
methods
function obj = GuiTitle(text)
if nargin == 0
text = '';
end
obj@uicontrol('Style', 'text', 'String', upper(text));
end
end
end
这是我的代码:
function hello_gui
% Test GUI
GuiConstants % contains constants that
GuiTitle %%
f = figure('Visible','off','Position',[POS_FROM_LEFT,POS_FROM_BOTTOM,...
WINDOW_WIDTH,WINDOW_HEIGHT]);
set(f, 'MenuBar', 'none')
titleText = 'process variable names';
%title = uicontrol('Style', 'text', 'String', upper(titleText));
title = GuiTitle(titleText) %%
title.Position = [0, 0, WINDOW_WIDTH, WINDOW_HEIGHT];
title.FontSize = FONT_SIZE;
f.Visible = 'on';
end
当我用 %% 注释掉行并取消注释时
title = uicontrol('Style', 'text', 'String', upper(titleText));
window正确显示:
我错过了什么?
uicontrol
是一个创建类型为 matlab.ui.control.UIControl
:
的对象的函数
h = uicontrol;
class(h) % returns 'matlab.ui.control.UIControl'
不过这个class是封印的,不能当超级class:
classdef myclass < matlab.ui.control.UIControl
...
>> a=myclass
Error using myclass
Class 'matlab.ui.control.UIControl' is Sealed and may not be used as a superclass.
请注意,MATLAB 中的 GUIs 的设计与您在其他语言中可能使用的非常不同。无需派生自 UI classes 来更改它们的行为,您可以通过设置回调函数来定义它们的行为:
h = uicontrol;
h.String = 'button';
h.Callback = @(src,event) msgbox('pressed the button!');
我正在学习如何使用图形用户界面在 MATLAB 中以编程方式创建应用程序。我正在使用 MATLAB 2015a。
我不明白为什么会出现此错误:
Error using GuiTitle
The specified superclass 'uicontrol' contains a parse error, cannot be found on MATLAB's search path, or
is shadowed by another file with the same name.
我正在尝试创建一个名为 GuiTitle 的 class,它具有 uicontrol 作为超级class。我的 class GuiTitle 看起来像这样:
classdef GuiTitle < uicontrol
methods
function obj = GuiTitle(text)
if nargin == 0
text = '';
end
obj@uicontrol('Style', 'text', 'String', upper(text));
end
end
end
这是我的代码:
function hello_gui
% Test GUI
GuiConstants % contains constants that
GuiTitle %%
f = figure('Visible','off','Position',[POS_FROM_LEFT,POS_FROM_BOTTOM,...
WINDOW_WIDTH,WINDOW_HEIGHT]);
set(f, 'MenuBar', 'none')
titleText = 'process variable names';
%title = uicontrol('Style', 'text', 'String', upper(titleText));
title = GuiTitle(titleText) %%
title.Position = [0, 0, WINDOW_WIDTH, WINDOW_HEIGHT];
title.FontSize = FONT_SIZE;
f.Visible = 'on';
end
当我用 %% 注释掉行并取消注释时
title = uicontrol('Style', 'text', 'String', upper(titleText));
window正确显示:
我错过了什么?
uicontrol
是一个创建类型为 matlab.ui.control.UIControl
:
h = uicontrol;
class(h) % returns 'matlab.ui.control.UIControl'
不过这个class是封印的,不能当超级class:
classdef myclass < matlab.ui.control.UIControl
...
>> a=myclass Error using myclass Class 'matlab.ui.control.UIControl' is Sealed and may not be used as a superclass.
请注意,MATLAB 中的 GUIs 的设计与您在其他语言中可能使用的非常不同。无需派生自 UI classes 来更改它们的行为,您可以通过设置回调函数来定义它们的行为:
h = uicontrol;
h.String = 'button';
h.Callback = @(src,event) msgbox('pressed the button!');