how to put an app designer window in the center of the screen?
14 views (last 30 days)
hi, i've been designed an app in matlab, now the problem is that i want to put the app window in the center of the screen without setting position by myself. i want to write some codes so that everytime anyone open the app, the window is automatically always in the center. is it possible and how to realize?
the window now:
what i expect:
without setting this by the app user:
dpb on 23 Jun 2022
Edited: dpb on 23 Jun 2022
While you can do this using the .ScreenSize and .MonitorPositions properties retrieved from groot, I'd say it's quite rude and very egotistical to make your app appear in the middle of your users' screens regardless of their preferences.
It would be much better to let it default originally(*) and then save the position on close in a usersettings data structure and reload in last position on subsequent opens. Each user gets/keeps his own screen space that way.
(*) Or, alternatively, add a user preferences item in the menu that lets user select a given general location -- 'NW', 'NE', etc., ... something like what legend has for options. Just don't be adamant that your app must own the middle of the screen.
More Answers (1)
Image Analyst on 27 Jun 2022
I have a function to center the GUI on the screen. See below.
% Centers the figure on the screen.
% The figure Position property does not include the window borders,
% so this example uses a width of 5 pixels on the sides and bottom and 30 pixels on the top.
% borderWidth = 5;
% titleBarWidth = 30;
% Ensure root units are pixels:
g = groot;
g.Units = 'pixels';
% Get the screen size in pixels:
screenSize = g.ScreenSize;
screenWidth = screenSize(3);
screenHeight = screenSize(4);
% Get the size of the window.
childrenFigure = g.Children;
if numel(childrenFigure) > 1
childrenFigure.Units = 'pixels';
initialFigurePosition = childrenFigure.Position;
% Create an array that will center it.
centeredX = (screenWidth - initialFigurePosition(3)) / 2;
centeredY = (screenHeight - initialFigurePosition(4)) / 2;
centeredPosition = [centeredX,...
% Send the centered coordinates to the figure to actually cause the figure to move.
childrenFigure.Position = centeredPosition;
errorMessage = sprintf('Error in program %s, function %s(), at line %d.\n\nError Message:\n%s', ...
mfilename, ME.stack(1).name, ME.stack(1).line, ME.message);
return; % from CenterFigure()