2016-08-05 66 views
0

我構建了一個函數「sng_figureslide」,它生成一個滑塊,可以滑過已創建的所有圖形。我必須點擊de滑塊才能用箭頭鍵控制它。如何在GUI matlab中創建一個對象?

我想知道是否有可能在我調用該函數時使滑塊對象處於活動狀態,因此我不必事先單擊滑塊。

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 

此外,我覺得這個功能對於很多人來說非常有用,所以請隨時使用它。

+0

您可以設置一個WindowKeyPressFcn來捕獲箭頭鍵事件併爲您更新滑塊。 – Suever

回答

1

當您創建uicontrol時,保存它的句柄。然後將該句柄傳遞迴uicontrol函數。

h = uicontrol (....) 
uicontrol (h); 
+0

您的解決方案非常簡單直接。 TX!有時候我只是看不到那些簡單的。 –