2017-05-31 2 views
2

Comment puis-je régler le focus sur uifigure après que la mise au point ait été désactivée?Réglage de la mise au point sur une fenêtre de configuration

Pour uicontrol, il est possible de mettre l'accent sur l'un de ses éléments enfants. Par exemple:

% create a new uicontrol text label 
h = uicontrol('style','text','string','This is my figure'); 
% create a figure to switch the focus 
figure; 
% switch back 
uicontrol(h) 

Cependant, pour uifigure, l'adoption d'un code similaire ne crée qu'un uifigure.

code pour vous d'essayer:

% create a new uifigure 
h = uifigure('Name','This is my figure'); 
% create a new uilabel as a child of uifigure 
lh = uilabel(h) 
% create a figure to switch the focus 
figure; 
% this creates a new uifigure then switch back 
uifigure(h) 
% this creates an error as the first input argument must be a valid parent for uilabel 
uilabel(lh) 

Toute idée, ou un aperçu contribution est appréciée.

Notez que votre version de Matlab doit être au moins 2016a, car c'est à ce moment que uifigure est introduit.

Répondre

6

Ceci est encore une des victimes de la stratégie bizarre de The MathWorks de publier un nouveau framework d'interface utilisateur avant même qu'il ne comporte des fonctionnalités. Certes, le nouveau cadre montre beaucoup de promesses, mais il reste encore l'ancien système graphique en termes de fonctionnalité.

Rant de côté, il y a une solution de contournement rapide qui teste bien dans R2017a: basculer la visibilité de la uifigure, ce qui le met en évidence. Voici un exemple de base:

function uifigurepop(uifigurehandle) 
drawnow; 
uifigurehandle.Visible = 'off'; 
uifigurehandle.Visible = 'on'; 
end 

qui, si nous apportons ceci dans l'exemple de code:

% create a new uifigure 
h = uifigure('Name','This is my figure'); 
% create a new uilabel as a child of uifigure 
lh = uilabel(h) 
% create a figure to switch the focus 
figure; 
% this creates a new uifigure then switch back 
uifigure() 
uifigurepop(h); 

Votre silhouette est maintenant rendu le plus élevé à l'écran.