uipanel position jumping randomly

2 views (last 30 days)

On 2021b, the following code runs with two different behaviors

Either the panel has the correct position (first picture) or it is too big (second picture)>
f = figure('PaperUnits','centimeters', ...
'PaperSize',[21 29.7], ...
'PaperPosition',[0 0 21 29.7], ...
'PaperPositionMode','manual', ...
'PaperType','A4',...
'Units','centimeters',...
'Position',[0 0 21 29.7],...
'Resize','off',...
'MenuBar','none',...
'ToolBar','none');

page_margin = 1.5;
pos = [page_margin page_margin 21-2*page_margin 29.7-2*page_margin];
main_panel = mypanel(f,pos);

function p = mypanel(parent,pos)
p = uipanel(parent,...
'Units','centimeters',...
'Position',pos,...
'BorderType','none',...
'BackgroundColor','w',...
'ShadowColor','w');
end

  1 Comment
Martin Privat
Martin Privat on 4 Nov 2022
Here is what the problem looks like on two runs of the code

Sign in to comment.

Accepted Answer

Martin Privat
Martin Privat on 4 Nov 2022
Many thanks to Daniele Sportillo for finding a solution, this seems to do the trick:
f = figure()
pause(0.1)
set(f,'PaperUnits','centimeters', ...
'PaperSize',[21 29.7], ...
'PaperPosition',[0 0 21 29.7], ...
'PaperPositionMode','manual', ...
'PaperType','A4',...
'Units','centimeters',...
'Position',[0 0 21 29.7],...
'Resize','off',...
'MenuBar','none',...
'ToolBar','none');
page_margin = 1.5;
pos = [page_margin page_margin 21-2*page_margin 29.7-2*page_margin];
main_panel = mypanel(f,pos);

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!