how to put an app designer window in the center of the screen?

13 views (last 30 days)
rumin diao
rumin diao on 23 Jun 2022
Commented: Image Analyst on 27 Jun 2022
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?
thank you!
the window now:
what i expect:
without setting this by the app user:

Accepted Answer

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.
Image Analyst
Image Analyst on 27 Jun 2022
I wouldn't say it's "quite rude and very egotistical" to come up centered instead of where they happened to have last left the app on the screen. A lot of times users are rearranging various windows on the screen, and where they last moved it to is not necessarily where they would like to have it the next time they launch the app. In fact usually my apps have so much stuff, including an image or two that I want to enlarge as much as possible so that users can see details better, that I maximize my apps by setting the WindowState property to 'maximized'.
Anyway, @rumin diao if you want my code, then scroll down to see it.

Sign in to comment.

More Answers (1)

Image Analyst
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.
function CenterFigure(handles)
% 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;
catch ME
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()

Community Treasure Hunt

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

Start Hunting!