2

問題は:

Pushbottomがクリックされると、次の行が選択されます。関連するコードは次のとおりです。

function pushbutton11_Callback(hObject, eventdata, handles)
   global mtable;
   jScroll = findjobj(mtable);
   jtable=jScroll.getViewport.getView;
   row = jtable.getSelectedRow ;
   jtable.setRowSelectionInterval(row+1,row+1);
   jtable.setColumnSelectionInterval(0,99); %the number of mtable columns is 100

そしてopenningFunction私は次のようにmtable

mtable = uitable('parent',gcf,'Units','normalized','Data',data);
set(mtable,'columnName',cname);
set(mtable,'Position',[0.17 0.2 0.75 0.75]);
4

1 に答える 1

1

失敗した場合は、おそらくjScroll空です。これfindjobjは、グローバル変数を使用しているために発生する可能性があります!

どうか、どうか、すべての善良で神聖なものへの愛のために、グローバル変数を使用しないでください。それらは、予防できるよりも指数関数的に多くの痛みを引き起こします。

とにかく、この行の末尾にあるセミコロンを削除してみてください

jScroll = findjobj(mtable)

エラーが発生したときの出力を確認します。私の言うことが本当なら、次のような方法で回避できます

jScroll = findjobj(mtable);
if ishandle(jScroll) %// <-- add this line
   jtable=jScroll.getViewport.getView;
   row = jtable.getSelectedRow ;
   jtable.setRowSelectionInterval(row+1,row+1);
   jtable.setColumnSelectionInterval(0,99);
end %// <-- and this one

(とにかく、これは、ハンドルであると想定されているものに対しては良い練習です。

それはまったく役に立ちますか?

于 2012-12-06T13:51:44.753 に答える