2016-12-07 1 views
1

J'utilise MATLAB GUIDE pour créer une interface graphique pour contrôler un composant matériel. J'ai un tableau de données que l'utilisateur doit remplir et chaque fois qu'il sélectionne une cellule, une nouvelle configuration est envoyée au matériel. Ceci est facilement fait en utilisant le CellSelectionCallback().Sélection de rappel pour la saisie de texte

Cependant, j'ai également une seule valeur de référence qui est actuellement saisie dans une zone de texte edit. Je voudrais que l'interface graphique envoie une nouvelle configuration au matériel chaque fois qu'un utilisateur sélectionne la zone de texte, mais avant qu'ils entrent leur nouvelle valeur. Y a-t-il une fonction SelectionCallback similaire qui peut être utilisée pour la zone de texte? La meilleure solution que j'ai trouvée est de créer une table 1x1 au lieu d'une boîte d'édition.

Répondre

1

Votre meilleur pari va être d'utiliser un contrôle Java puisque le standard MATLAB uicontrol n'a pas de rappel de focus. Vous pouvez utiliser un objet JTextField, l'ajouter à votre interface graphique avec javacomponent, puis enregistrer le FocusGainedCallback.

jtext = javax.swing.JTextField(); 
jtext.setHorizontalAlignment(javax.swing.JTextField.CENTER); 

% Add the control to your GUI 
htext = javacomponent(jtext, [10 10 200 10]); 

% Register a callback to be executed when the box is selected 
set(htext, 'FocusGainedCallback', @yourCallback)