Matlab Uitable On / Off

时间:2014-01-04 22:16:16

标签: matlab matlab-uitable

请我用两个按钮创建一个gui;一个用于显示uitable而另一个用于隐藏uitable。我的问题是,隐藏按钮不会将uitable的可见性设置为关闭。我的代码如下所示。任何帮助为什么这不起作用?谢谢。

function []=hide()
SCR = get(0,'Screensize');  % Get screensize.
S.fh = figure('color',[0.8 0.8 0.8],'numbertitle','off',...
          'units','pixels',...
          'position',[SCR(3)/2-500 ,300 , 650, 600],...
          'name','myTable',...
          'resize','on');
movegui(S.fh,'center');

S.pb(1)=uicontrol('style','push','units','pixels','position',...
[5 530 150 30],'string','Show Table','fontsize',12,...
'fontweight','bold'); 
S.pb(2)=uicontrol('style','push','units','pixels','position',...
[255 530 170 30],'string','Hide Table','fontsize',12,...
'fontweight','bold'); 
%Callbacks
set(S.pb(1),'callback',{@pb_call1,S});
set(S.pb(2),'callback',{@pb_call2,S});

%PushButtons Operation
function []=pb_call1(varargin)
S=varargin{3};
S.t=uitable('Parent',S.fh,'Data',magic(10));
end

end

function []=pb_call2(varargin)
S=varargin{3};
S.t=uitable('Parent',S.fh,'Data',magic(10));
set(S.t,'visible','off')
end

1 个答案:

答案 0 :(得分:1)

pb_call2()中,您正在创建一个新的uitable,覆盖旧句柄,然后隐藏新句柄。最终结果:旧表仍然可见,现在您没有处理它。

简而言之,删除

S.t=uitable('Parent',S.fh,'Data',magic(10));

来自pb_call2()

请记住pb_call1()每次调用时都会创建一个新的uitable,因此您很快就会遇到同一问题的变体。最好在初始化时创建一次表,并让回调设置属性打开或关闭。