Clear Filters
Clear Filters

UITable Scrollbars not showing and scrolling semi-INOP

4 views (last 30 days)
I have an app with UITable. During operation I import data to the table with ~350 rows. See image attached.
There is way more data than displayed, but the vertical scrollbar is not showing.
Sometimes I can use the scroll wheel to browse downward but it typically stops scrolling around 100-130 rows; I can never see the bottom of the data.
If I select a cell and use the down arrow it will walk down offscreen and back as if the table is fine... just not scrolling. Same for page down/up - the selected cell changes but scrolling does not follow.
The issue may be related to the creation code but I have yet to find the flaw... I've pasted the code below.
function handles = CreateTabbedPanels(handles)
%Create tab group
handles.tgroup = uitabgroup('Parent', handles.figure1,'TabLocation', 'top');
handles.tab1 = uitab('Parent', handles.tgroup, 'Title', 'Pressure Plots');
handles.tab2 = uitab('Parent', handles.tgroup, 'Title', 'Data Table');
%Place panels into each tab
handles.P1 = uipanel(handles.tab1);
handles.P2 = uipanel(handles.tab2);
%Reposition each panel to same location as panel 1
set(handles.P2,'position',get(handles.P1,'position'));
% Create Tab 1 items
handles.ax1 = subplot(1,1,1,'Parent',handles.P1);
% Create Tab 2 items - Create a data table
VarNames = {'Pressure','PumpEncoder','ZEncoder', ...
'ZEncValid', 'PressureSlope','SlopeFault','PressureFault'};
T = cell2table(cell(500,7), ...
'VariableNames', VarNames);
handles.uit1 = uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'Units', 'Normalized', 'ForegroundColor', [0,0,0], ...
'BackgroundColor',[0.9,0.9,0.9;0.82,0.82,0.82], ...
'FontSize', 10, ... %'FontWeight','bold', ...
'Position',[0, 0, 1, 1], ...
'Parent',handles.P2);
% Place in upper left
handles.uit1.Position = [0, 1-handles.uit1.Extent(4)-10, ...
handles.uit1.Extent(3)+10,handles.uit1.Extent(4)+10];
end

Accepted Answer

Adam Danz
Adam Danz on 25 Feb 2020
Edited: Adam Danz on 25 Feb 2020
The last line of your code is resizing the UITable and pushing the vertical scroll bar out of the figure boundaries.
When you create the UITable,
handles.uit1 = uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'Units', 'Normalized', 'ForegroundColor', [0,0,0], ...
'BackgroundColor',[0.9,0.9,0.9;0.82,0.82,0.82], ...
'FontSize', 10, ... %'FontWeight','bold', ...
'Position',[0, 0, 1, 1], ...
'Parent',handles.P2);
since the units are normalized and the position is [0 0 1 1] it is consuming the entire panel. This would result in the vertical scroll bar appearing along the right border of the panel.
But then the next line repositions the UITable.
handles.uit1.Position = [0, 1-handles.uit1.Extent(4)-10, ...
handles.uit1.Extent(3)+10,handles.uit1.Extent(4)+10];
What's your goal with that line? Note that extent is not a documented property of UITables.
  2 Comments
Marc Elpel
Marc Elpel on 25 Feb 2020
Last line was a cut & paste frmo other code using tables where table size required a specific adjustment.
You were correct - comment that out and the scroll bars show, and I can now manually scroll to the bottom of data as well. Pretty simple - appreciate your feedback!
Adam Danz
Adam Danz on 25 Feb 2020
Glad I could help.
Whenever I use someone else's code I either look it over line-by-line to see what it's doing and I look up unfamiliar items, or I run it in debug mode line-by-line and examine the results of each line. If the code is very long I'll combine these approaches and quickly look over the lines and run the code in sections.
Avoid blindly running someone else's code.

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products


Release

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!