GUI full screen with centred figure?
조회 수: 5 (최근 30일)
이전 댓글 표시
Hello,
let's say I have a 500 x 500 pixels GUI. When I set the resize funktion in the property inspector "on" and maximze the window my GUI will move to the left bottom and the rest of the screen is filled with the grey background colour.
Is it possible to have my GUI centred in the middle of the screen when I maximize the GUI?
Thanks in advance Nils
댓글 수: 1
Adam
2014년 10월 17일
Do you want all the components to stay the same size or resize themselves to fill the same relative space that they did in the original size?
I tend to set all my GUI Components to have 'normalized' units so that when I resize the window they stay proportionally as they were. It isn't ideal, certainly for down-sizing, but it does avoid having all the GUI components just plonked in one corner.
답변 (3개)
Jakob Sørensen
2014년 3월 31일
It is definitely possible to get the figure size using get(gcf, 'position'), and then calculate where the figure position should be, to be centered (as this depends only on figure size and axis size). There might be a simpler way, but not one I know.
댓글 수: 0
Image Analyst
2014년 10월 17일
편집: Image Analyst
2014년 10월 17일
I found some of my programs broke with R2014b because I was using one of Yair's undocumented calls to maximize the GUI window:
% Function to maximize the window via undocumented Java call.
% Reference: http://undocumentedmatlab.com/blog/minimize-maximize-figure-window
FigurejFrame = get(handle(gcf),'JavaFrame');
FigurejFrame.setMaximized(true);
Unfortunately it barfs up a bunch of red java messages with R2014b.
Error using test (line 60)
Java exception occurred:
java.lang.NullPointerException
at com.mathworks.hg.peer.FigureFrameProxy.setMaximized(FigureFrameProxy.java:302)
at com.mathworks.hg.peer.FigureMediator.setMaximized(FigureMediator.java:468)
Is there an alternate method that you know about, other than using set(gcf, 'Position'....) which doesn't really maximize.
Even Yair's suggest fix for R2014b (HG2) does not work:
% Enlarge figure to full screen.
jFrame = get(handle(gcf),'JavaFrame');
% set(gcf,'Resize','off');
try
jFrame.fHG1Client.setMaximized(true); % HG1
catch
jFrame.fHG2Client.setMaximized(true); % HG2
end
drawnow;
pause(0.1);
UNLESS there's a breakpoint set anywhere in the try/catch - then it works fine. Bizarre.
댓글 수: 1
Adam
2014년 10월 17일
편집: Adam
2014년 10월 17일
I've also had problems with using the undocumented functionality after the R2014b upgrade, but not to the extent I could really pin down the cause. Just seemed to be a general case of figures no longer being in focus when they were in R2014a for e.g. findjobj to work correctly or that functionality that used to work in the OpeningFcn of a GUI that now doesn't work presumably because the GUI is not visible yet and R2014b doesn't like that whereas R2014a was fine with it.
I also had functionality in a Resize function that was triggering before the GUI became visible that stopped working similarly.
Unfortunately I ran out of time on getting to the bottom of these so had to settle for inferior documented solutions or just worse UIs in some cases.
Josep Llobet
2022년 7월 14일
Hello,
For obtain a centered GUI figure based on the screensize, in MATLAB App, you can try it:
% Obtain GUI position
UIFigure_position = app.UIFigure.Position; %100 100 602 389
% inici final amplada llargada
%Obtain screen position
screensize_position = get(0, 'ScreenSize'); % 1 1 1920 1080
% Construct new positions based on the screen and figure positions.
amplada_new = ceil(screensize_position(3)/2 - UIFigure_position(3)/2);
llargada_new = ceil(screensize_position(4)/2 - UIFigure_position(4)/2);
UIFigure_position_new = [amplada_new, llargada_new, UIFigure_position(3), UIFigure_position(4)];
% Add this position to the MATLAB App figure:
app.UIFigure.Position = UIFigure_position_new;
I am going to put it into a function in MATLAB File exchange
I hope will be useful
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!