2013-06-20 78 views
0

另一個GUIDE問題。彈出菜單的動態填充 - MATLAB

我用彈出菜單創建了一個GUIDE圖。調用圖形時,菜單的元素是動態確定的。例如:應該調用myGUI(data, popupNames),然後應該使用popupNames中包含的字符串來標記選項。我可以在彈出菜單的回調中做到這一點。然而,這意味着彈出窗口不會被填充,直到我實際按下彈出菜單並選擇第一個(明確地爲空)選項。

我的問題是我將如何能夠通過創建功能(或任何其他功能)動態填充它。我也需要做一個相同的事情與一個可用(填充行和列的名稱,雖然這不是動態的)

我失敗的嘗試,這導致我意識到我無法訪問句柄數據創建功能如下:

% --- Executes during object creation, after setting all properties. 
function popupmenu1_CreateFcn(hObject, eventdata, handles) 
handles.popupNames = varargin{2}; 
set(hObject, 'String', {handles.popupNames{1:end}}); 

% --- Executes during object creation, after setting all properties. 
function uitable1_CreateFcn(hObject, eventdata, handles) 

handles.data = varargin{1}; 

t = uitable(handles.uitable1); 
set(t,'Data',handles.data{1}) 
set(t, 'ColumnName', {'a', 'b', 'c'}) 
set(t,'RowName', {'1', '2', '3'}) 

回答

4

GUIDE生成一個myGui_OpeningFcn(hObject, eventdata, handles, varargin)。在那裏,你可以初始化字符串:

function myGui_OpeningFcn(hObject, eventdata, handles, varargin) 

    handles.output = hObject; 

    set(handles.popupmenu1, 'String', varargin{2}); 

    set(handles.uitable1, 'Data', varargin{1}); 
    set(handles.uitable1, 'ColumnName', {'a' 'b' 'c'}); 
    set(handles.uitable1, 'RowName', {'1' '2' '3'}); 

    guidata(hObject, handles); 
end 

注意使用guidata哪些更新的手柄結構與新handles的GUI。如果您在更改handles結構時不撥打guidata,則所做的更改將不會反映出來。

+0

謝謝,這個作品完美。最重要的是感謝您清楚解釋發生了什麼! – msmf14