为什么这个MATLAB类不能保留其属性?

时间:2014-10-14 09:21:21

标签: matlab class matlab-figure

我必须在这里找到一些非常简单的东西。我有一个MATLAB类创建一个包含两个按钮的图形,每个按钮调用相同的功能,但这些按钮的句柄不保留在该功能中,我不知道原因。

这里是班级,简化......

classdef Test

    properties
        Figure
        ButtonA
        ButtonB
    end

    methods    
        function app = Test()       
            app.Figure = figure();

            app.ButtonA = uicontrol('Style', 'pushbutton', ...
                'String', 'Button A', ...
                'Position', [10, 10, 100, 20], ...
                'Callback', @app.PressButton);
            app.ButtonB = uicontrol('Style', 'pushbutton', ...
                'String', 'Button B', ...
                'Position', [10, 120, 100, 20], ...
                'Callback', @app.PressButton);
        end

        function PressButton(app, Button, ~)
            Button
            app.ButtonA
            app.ButtonB
        end
    end
end

如果我调用它会打开图形,并显示按钮的句柄编号:

>> T = Test
T = 
  Test with properties:

     Figure: 8
    ButtonA: 745.000122070313
    ButtonB: 103.002319335938
>> T.ButtonA
ans = 745.000122070313
>> T.ButtonB
ans = 103.002319335938

如果按下按钮A,该函数将返回两个空值,就好像尚未设置属性一样:

Button =
          745.000122070313
ans =
     []
ans =
     []

如果我按下按钮B,该功能会返回按钮A的值,但按钮B的值为空值:

Button =
          103.002319335938
ans =
          745.000122070313
ans =
     []

我非常感谢任何建议。

1 个答案:

答案 0 :(得分:6)

您应该从句子中继承您的类。 检查matlab的value - 课程和handle - 课程here之间的区别。

为此,请更改代码中的第一行:

 classdef Test < handle