このソリューションは、 を使用して作成された GUI で機能しMATLAB GUIDE
ます。MATLAB GUI が奇妙な動作を示すのは事実だと思いますが、MATLAB コールバックを のようなものを使用してデバッグkeyboard
し、dbquit
. したがって、私のアドバイスは、 で作成された MATLAB GUI にキーボード関連のコマンドを使用しないようにすることです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);
これがうまくいくことを願っています!