请我用两个按钮创建一个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
答案 0 :(得分:1)
在pb_call2()
中,您正在创建一个新的uitable
,覆盖旧句柄,然后隐藏新句柄。最终结果:旧表仍然可见,现在您没有处理它。
简而言之,删除
S.t=uitable('Parent',S.fh,'Data',magic(10));
来自pb_call2()
。
请记住pb_call1()
每次调用时都会创建一个新的uitable
,因此您很快就会遇到同一问题的变体。最好在初始化时创建一次表,并让回调设置属性打开或关闭。