自动向下滚动列表框

时间:2019-03-29 14:33:23

标签: matlab matlab-guide

我正在使用没有scroll函数的Matlab R2018a。我只需要在动态添加项目时向下滚动列表框即可。

我在Google上找到了此解决方案,但不适用于我。

handles.slider.Max = length(handles.listbox.String);
handles.slider.Value = handles.slider.Max;

还有其他解决方法吗?

1 个答案:

答案 0 :(得分:1)

为了使ListboxTop属性生效,必须在将项目添加到列表框中后重新绘制UI(使用drawnow)。

示例,将GUIDE与一个标记为listbox1的列表框一起使用:

在GUI的OpeningFcn中,写

handles.t = timer('BusyMode', 'drop', 'ExecutionMode',...
'fixedRate', 'StartDelay', 4, 'Period', 4.0, 'TimerFcn', {@addItem, hObject});
handles.ctr = 0;
handles.t.start();
guidata(hObject, handles);

最后添加

function addItem(hObject, EventData, parentO)

handles = guidata(parentO);
handles.ctr = handles.ctr + 1;
handles.listbox1.String{end+1} = sprintf('Item %i', handles.ctr);
drawnow
handles.listbox1.ListboxTop = numel(handles.listbox1.String) ;
guidata(parentO, handles);

请注意,取消对drawnow行的注释时,列表框将始终跳至所选项目(默认情况下为第一个)。