此解决方案适用于使用MATLAB GUIDE
. 我认为 MATLAB GUI 确实显示出奇怪的行为,但是我在使用类似的东西调试 MATLAB 回调时看到了大多数奇怪的行为,而keyboard
使用dbquit
. 因此,我的建议是不要对使用GUIDE
.
现在,回到解决您的问题,请按照以下步骤操作。
第 1 步:在 GUINAME__OpeningFcn 的开头添加:
handles.row_col_prev = [1 1];
第 2 步:在上下文中单击表的属性,然后单击CellSelectionCallback
。因此,如果表的标签是uitable1
,它将创建一个名为 - 的函数uitable1_CellSelectionCallback
。
假设 GUI 的图形有标签 -addrows_figure
在其中添加这些:
%%// Detect the current key pressed
currentkey = get(handles.addrows_figure,'CurrentCharacter')
%%// Read in previous row-col combination
prev1 = handles.row_col_prev
%%// Read in current data. We need just the size of it though.
data1 = get(handles.uitable1,'Data');
%%// Main processing where a row is appended if return is pressed
if numel(prev1)~=0
if size(data1,1)==prev1(1) & currentkey==13 %%// currentkey==13 denotes carriage return in ascii
data1(end+1,:) = repmat({''},1,size(data1,2)); %%// Append empty row at the end
set(handles.uitable1,'Data',data1); %%// Save it back to GUI
end
end
%%// Save the current row-col combination for comparison in the next stage
%%// when selected cell changes because of pressing return
handles.row_col_prev = eventdata.Indices;
guidata(hObject, handles);
希望这对你有用!