Ich erstelle eine Funktion "sng_figureslide", die einen Schieberegler erzeugt, der durch alle bereits erstellten Figuren gleiten kann. Ich muss auf den Schieberegler klicken, um ihn mit den Pfeiltasten zu steuern.Wie mache ich ein Objekt in GUI Matlab aktuell?
Ich frage mich, ob es möglich ist, das Slider-Objekt aktiv zu machen, wenn ich die Funktion aufrufen, so dass ich nicht im Voraus auf den Schieberegler klicken muss.
function sng_figureslide
figh=findobj('type','figure');
figs=numel(figh);
% if there are one or zero figures, the slider does not appear
if figs > 1
sliderstep = 1/(figs-1);
else
return
end
fignumber = cell2mat(get(figh,'Number'));
sliderfignumber = max(fignumber) + 1;
figure(max(fignumber) +1)
set(gcf,'position',[360 190 560 36]);
set(gcf,'Toolbar','none');
a=annotation('textbox',[0.03 0.2 0.1 0.7],'String',num2str(figs));
uicontrol('Style', 'slider',...
'Min',1,'Max',figs,'Value',figs,...
'Position', [80 10 470 20],...
'Callback', {@slider1,figh,a,figs,fignumber,sliderfignumber},...
'SliderStep', [sliderstep sliderstep]);
end
function slider1(hObj,~,figh,a,figs,fignumber,sliderfignumber)
Val = round(get(hObj,'Value'));
set(a,'String',num2str(Val));
figure(figh(Val));
figure(sliderfignumber);
end
Außerdem denke ich, dass diese Funktion für viele Leute ziemlich nützlich ist, also fühlen Sie sich frei, sie zu benutzen.
Sie können ein 'WindowKeyPressFcn' einstellen, um Pfeilereignisse zu erfassen und den Schieberegler für Sie zu aktualisieren. – Suever