0

请我创建了一个带有两个按钮的 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
4

1 回答 1

1

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

简而言之,删除

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

pb_call2().

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

于 2014-01-04T22:23:37.460 回答