2014-06-09 47 views
3

因爲它在編輯框uicontrol的MATLAB文檔中引用或在此 post中聲明,所以當單擊另一個組件或菜單欄或後臺GUI時,將執行編輯框回調。但在嘗試使用此功能時,除非編輯框文本發生更改或按下Enter鍵,否則我目前無法看到回調執行。我試圖達到的目的是在編輯框丟失焦點時執行編輯框回調,即使沒有輸入任何內容。請賜教我關於我在這裏失蹤的事情以及我該如何做到這一點?MATLAB - 編輯框的回調執行

在此先感謝。

+1

看來,當編輯文本失去焦點的回調被執行_只有其內容已被編輯_。至少這就是我在這裏得到的 –

+0

是的,它似乎是這種情況,但是文檔呢? – user3723486

+0

這似乎支持我們的意見:http://www.mathworks.es/es/help/matlab/creating_guis/add-code-for-components-in-callbacks.html#f10-1001464 –

回答

2

底層Java對象有一個名爲FocusLostCallback回調會做你想要的東西 - 當對象的焦點丟失執行,即使你什麼都沒有改變。

你需要findjobj從MATLAB文件交換。然後,獲取Java手柄和設置回調像往常一樣(確保uicontrol是可見的,當你試圖獲取Java手柄):

jh = findjobj(myEditBox); % myEditBox is a uicontrol handle 
set(jh, 'FocusLostCallback', @myCallback); 

無證uicontrol回調的更完整的列表可以在Yair Altman's Undocumented MATLAB blog被發現。

+0

因此,http://mathworks.com/help/matlab/ref/uicontrol.html中編輯框的信息並非明確爲真 – user3723486

+0

根據以下聲明:「要執行(a)單擊另一個組件,菜單欄或GUI的背景; (b)對於單行可編輯文本框,按Enter鍵。 (c)對於多行可編輯文本框,請按Ctl + Enter。「 ,當編輯框中沒有任何變化時,它看起來不是真的。請注意,當您確實按Enter鍵後,它仍會執行回調。這可能會提醒The MathWorks。 –

1

這種方法與單行文本框完美的工作,但它與多行文本框任何影響(uicontrol,風格編輯,最大= 2)