Is it possible to detect when a gui moves to the background?

Hello all,
I use one main-gui for entering parameters when a sub-gui does calculations in the background.
Is it possible to detect when a gui moves to the background? And if so how do I program my sub-gui to reload variables when this happens?
An user has the ability to click on the minimize button or just click on a different gui.
When the user reopens the sub-gui I need the value’s to reset.
SimpleExample
%InputsMaingui
Ingreadients.Suger =3;
Ingreadients.flour = 1;
Open subgui
%show output:
Ingreadients.Suger =3;
Ingreadients.flour = 1;
*click on main window in the back
%change value's
Ingreadients.Suger =50;
Ingreadients.flour = 4;
*click on subgui *this is when it goes wrong and the gui uses the wrong data.
%show output
Ingreadients.Suger =3;
Ingreadients.flour = 1;
this happens cause the users dont "restart" the sub-gui so I want the sub-gui to restart everytime it has been to the background.
Or a method that forces an user to close the sub-gui before he/she can click anywere else. Like when an error message pops up you have to pres "ok" before you can continue any other operation
Regards, Nick

 Akzeptierte Antwort

Jan
Jan am 25 Jul. 2013
Bearbeitet: Jan am 26 Jul. 2013
There is no documented method to achieve this, but an undocumented one:
FigH = gcf; drawnow;
jFrame = get(handle(FigH), 'JavaFrame');
% [EDITED]
try
jProx = jFrame.fFigureClient.getWindow;
catch
jProx = jFrame.fHG1Client.getWindow;
end
% [/EDITED]
set(jProx, 'WindowLostFocusCallback', {@figLostFocus, FigH});
function figLostFocus(jProx, EventData, FigH)
disp(clock) % Dummy for testing
Is is recommended to set this into a TRY/CATCH-Block and simply a useful error message, when it fails. The shown method might fail in future Matlab version as all undocumented features.

3 Kommentare

If I try the code you typed there I get the following error:
No appropriate method, property, or field fFigureClient for class com.mathworks.hg.peer.HG1FigurePeer
Do you know a method that forces an user to close the sub-gui before he/she can click anywere else? Like when an error message pops up you have to pres "ok" before you can continue any other operation.
Please post which Matlab version you are using.
Do you mean:
figure('WindowStyle', 'modal')
See [EDITED] for a possibly working fallback. But remember that such errors are typical of undocumented methods.
I am using Matlab R2012b.
And indeed
figure('WindowStyle', 'modal')
is the code im looking for thanks allot!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Performance and Memory finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 25 Jul. 2013

Community Treasure Hunt

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

Start Hunting!

Translated by