How can I control the stacking order of objects in appdesigner?
50 views (last 30 days)
Show older comments
Kevin J. Delaney on 4 Jan 2018
How can I control the stacking order of objects in appdesigner? It seems to be determined by the order in which the panels or axes are created. What if I want an object created later to slide underneath earlier objects?
Sean de Wolski on 4 Jan 2018
You can control the order of the 'Children' of a graphics object directly:
fig = uifigure;
panel1 = uipanel(fig, 'BackgroundColor', 'b');
panel2 = uipanel(fig, 'BackgroundColor', 'r');
fig.Children = flip(fig.Children)
paul harder on 28 Aug 2020
Yes, intuitively I should be able to drag panels up and down the component browser to order the stacking. It seems like the stack order is tied to the order of creation, which is super inflexible.
More Answers (3)
Wouter on 14 Feb 2018
You could also keep a list of handles; e.g. in the variable background and than move all of these to the background.
hfig = uifigure; % create figure
hax = uiaxes(hfig); % create axis
foreground = plot(hax,rand(1,100),'r'); % create red line
for ind = 1:10
% this moves the foreground plot to the background...
background(ind) = plot(hax,rand(1,100),'k'); % create 10 ack lines (on top of red line)
% move the background lines to the background!
ch = get(hax,'children'); % get all plots from hax
[~,neworder] = sort(ismember(ch,background)); % reorder the handles to move the background lines to the background
set(hax,'children',ch(neworder)); % set the new order of all lines
Adam Danz on 17 Mar 2023
Starting in MATLAB R2023a you can use uistack to control the stacking order of ui components in a uifigure such as in App Designer.
See release notes.
Find more on Develop uifigure-Based Apps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!