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)

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!